Hi,
when we are using client side binding of DetailTables in RaDgrid following issues we found
1.Unable toassign multiple datakeynames for ClientDataKeyNames, when we tried its throwing error
2. Unable to Hide and show the Expand and Collpase buttons on RadGrid1_ItemDataBound
3. Unable to find the control in the detailtables
Thanks,
Sridevi.

| foreach (GridColumn gc in mlRadGrid.MasterTableView.Columns) |
| { |
| gc.Visible = true; |
| } |
Partial Class Dispatcher_MismatchedReport
Inherits System.Web.UI.Page
'
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If (Not (IsPostBack)) Then
CollapseAll()
End If
End Sub ' Page_Load
'
Private Sub CollapseAll()
Dim item As GridItem
For Each item In RadGrid1.MasterTableView.Controls(0).Controls
If TypeOf item Is GridGroupHeaderItem Then
item.Expanded = False
End If
Next item
End Sub ' CollapseAll
'
End Class
Here is my environment Specs:
I have a radgrid that has more than one page of data to show, the data on the page is being filled correctly, and I am limiting it to 20 records per page. I am using both the numbers href links to page through the grid and the arrow, as more data is available to be shown. When I click on the page number or arrow to page through the data in the rad grid I get the following error (also in green where it happens on my code behind snippet down below):
Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
My debug triggers the error on the codebehind on this line, in the rgUsers_ItemCommand() when I try to page to the next 20 records:
string sUserName = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["UserName"].ToString();
Do I need to do a conditional check to make sure that the rgUsers table has a row count greater than zero? Or is there some property I am not using to allow this? My dataset returns 30 users so I expect to see at least 10 users on page 2 of the radgrid.
Code from the aspx Page:
| <telerik:RadGrid ID="rgUsers" Skin="Office2007" runat="server" AllowPaging="True" |
| PageSize="20" AllowSorting="True" Width="100%" AutoGenerateColumns="False" OnNeedDataSource="rgUsers_OnNeedDataSource" |
| OnPreRender="rgUsers_PreRender" OnDeleteCommand="rgUsers_DeleteCommand" OnItemCommand="rgUsers_ItemCommand" GridLines="None"> |
| <PagerStyle Mode="NextPrevAndNumeric"></PagerStyle> |
| <MasterTableView CommandItemDisplay="None" GridLines="None" DataKeyNames="UserName"> |
| <RowIndicatorColumn Visible="False"> |
| <HeaderStyle Width="20px" /> |
| </RowIndicatorColumn> |
| <ExpandCollapseColumn Visible="False"> |
| <HeaderStyle Width="19px" /> |
| </ExpandCollapseColumn> |
| <Columns> |
| <telerik:GridEditCommandColumn> |
| </telerik:GridEditCommandColumn> |
| <telerik:GridBoundColumn DataField="UserName" HeaderText="UserName" UniqueName="UserName"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="Email" HeaderText="Email" UniqueName="Email"> |
| <HeaderStyle Width="25%" /> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="LastActivityDate" HeaderText="Last Activity Date" |
| UniqueName="LastActivityDate"> |
| <HeaderStyle Width="15%" /> |
| </telerik:GridBoundColumn> |
| <telerik:GridCheckBoxColumn DataField="IsApproved" HeaderText="Approved" UniqueName="IsApproved"> |
| <HeaderStyle Width="12%" /> |
| </telerik:GridCheckBoxColumn> |
| <telerik:GridCheckBoxColumn DataField="IsLockedOut" HeaderText="Locked Out" UniqueName="IsLockedOut"> |
| <HeaderStyle Width="12%" /> |
| </telerik:GridCheckBoxColumn> |
| <telerik:GridTemplateColumn UniqueName="TemplateColumn1"> |
| <ItemTemplate> |
| <asp:LinkButton ID="lnkBtnDelete" runat="server" CausesValidation="false" CommandName="Delete" |
| ForeColor="#044A7E" Text="Delete" Visible='<%# DelButShowHide((DataBinder.Eval (Container.DataItem, "UserName").ToString())) %>'></asp:LinkButton> |
| </ItemTemplate> |
| <HeaderStyle Width="8%" /> |
| </telerik:GridTemplateColumn> |
| </Columns> |
| <EditFormSettings> |
| <EditColumn UniqueName="EditCommandColumn1"> |
| </EditColumn> |
| </EditFormSettings> |
| </MasterTableView> |
| <HeaderStyle HorizontalAlign="Left" /> |
| <FilterMenu EnableTheming="True" Skin="Office2007"> |
| <CollapseAnimation Duration="200" Type="OutQuint" /> |
| </FilterMenu> |
| <SortingSettings SortedAscToolTip="/Manager/images/arrw_up.gif" SortedDescToolTip="/Manager/images/arrw_d.gif" /> |
| </telerik:RadGrid> |
Code from the aspx.cs code behind:
| protected void rgUsers_ItemCommand(object source, GridCommandEventArgs e) |
| { |
| //Errors out on this line :Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index |
| string sUserName = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["UserName"].ToString(); |
| //End Error out on this line |
| MembershipUser oUser = Membership.GetUser(sUserName); |
| DisplayMessage(string.Empty); |
| if (e.CommandName == RadGrid.EditCommandName)//Edit a user |
| { |
| e.Canceled = true;//interrupts the rgUsers commands so that it does not show inline edit forms |
| hdnSubmitType.Value = "UpdateUser"; |
| PageMode = mode.form; |
| RolePrivPanelMode = RolePrivMode.roleChoice; //sets default to role selected |
| tbUserName.Enabled = false; |
| hydrateEditForm(oUser); |
| buildRadTrees(UserInfo.UserIdentityKey.ToString(), oUser.ProviderUserKey.ToString()); |
| UserInfo.UserIdentityKey.ToString()); |
| CheckedRadTreesNodes(oUser); |
| RolePrivPanelMode = RolePrivMode.roleChoice; //set Roles panel to be shown |
| } |
| } |