I'm using the Rad Grid to sort via drag and drop, which is working pretty great. I'm also using a textbox and imagebutton as a second method of sorting my data. To do this I am passing the RowIndex to the ItemCommand then using that rowindex to find my textbox with the new sortID value in it. For some reason it looks like inside the ItemDataBound of the RadGrid The RowIndex gets doubled and it would also seem it uses a 1 based index instead of a 0 based. When i try to find the control using that index it wants to use a zero based index and the doubled index also causes error. I've fixed the problem by dividing the rowindex by 2 and then subtracting 1 for the 0 based index. This solution actually seems to be working fine. However, I don't like using a hack that I don't fully understand. The follow code works, but I'd like to know why i have to divide by 2 and subtract 1 in order for it to work correctly. Look at this line iRowIndex = (iRowIndex / 2) - 1
Protected Sub rgList_ItemCommand(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles rgList.ItemCommand If TypeOf e.CommandSource Is ImageButton AndAlso CType(e.CommandSource, ImageButton).ID = "btnSort" Then Dim iEntityID As Integer = 0 iEntityID = e.CommandArgument.ToString.Split("|")(0) Dim iRowIndex As Integer iRowIndex = e.CommandArgument.ToString.Split("|")(1) iRowIndex = (iRowIndex / 2) - 1 Dim iNewSortID As Integer = 0 Dim txtSortID As TextBox txtSortID = rgList.Items(iRowIndex).FindControl("txtSortID") If IsNumeric(txtSortID.Text) AndAlso txtSortID.Text > 0 Then iNewSortID = txtSortID.Text If iEntityID > 0 Then Dim oItem As New CollectTech.Items.Item(iEntityID) If oItem.SortID <> iNewSortID Then oItem.SortID = iNewSortID oItem.UpdateSortID() oItem.Dispose() End If End If End If LoadData() End If End Sub Protected Sub rgList_ItemDataBound(sender As Object, e As Telerik.Web.UI.GridItemEventArgs) Handles rgList.ItemDataBound If e.Item.ItemType = Telerik.Web.UI.GridItemType.Item OrElse e.Item.ItemType = Telerik.Web.UI.GridItemType.AlternatingItem Then Dim oItem As CollectTech.Items.Item = e.Item.DataItem Dim litItemName As Literal = e.Item.FindControl("litItemName") Dim txtSortID As TextBox = e.Item.FindControl("txtSortID") Dim btnSort As ImageButton = e.Item.FindControl("btnSort") litItemName.Text = Server.HtmlEncode(oItem.Name) txtSortID.Text = oItem.SortID btnSort.CommandArgument = oItem.ID & "|" & e.Item.RowIndex imgThumbnail.ImageUrl = sImagePath End If End Sub