This is a migrated thread and some comments may be shown as answers.

Accessing inner grid from code behind

3 Answers 471 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Ranjit
Top achievements
Rank 1
Ranjit asked on 28 Feb 2012, 02:42 PM

I have a hierarchal grid with check boxes against all the records (both parent and child), I also have a select all option which selects all the records in parent as well child. I am unable find the inner grid using FindControl method. Do let me know if you have any suggestion.

 

protected void ToggleSelectedState(object sender, EventArgs e)
        {
             
           if ((sender as CheckBox).Checked)
            {
                foreach (GridDataItem dataItem in radGridProgramList.MasterTableView.Items)
                {                   
                    (dataItem.FindControl("cbSelect") as CheckBox).Checked = true;
                    dataItem.Selected = true;
                    RadGrid radGridPolicyList = (RadGrid)dataItem.FindControl("radGridPolicyList");
                    foreach (GridDataItem InnerdataItem in radGridPolicyList.MasterTableView.Items)
                    {
                        (InnerdataItem.FindControl("cbSelect") as CheckBox).Checked = true;
                        InnerdataItem.Selected = true;
                    }                
                      
                }
                  
            }
            else
            {
                foreach (GridDataItem dataItem in radGridProgramList.MasterTableView.Items)
                {
                    (dataItem.FindControl("cbSelect") as CheckBox).Checked = false;
                    dataItem.Selected = false;
                }
            
        }
<telerik:RadGrid ID="radGridProgramList" AllowMultiRowSelection="true" runat="server" Width="100%" Height="476px" ShowStatusBar="true" AutoGenerateColumns="False" 
      PageSize="15" AllowSorting="True" AllowPaging="True" OnItemCommand="RadGrid_ItemCommand"
      OnNeedDataSource="RadGrid_NeedDataSource" OnPreRender="RadGridClientList_PreRender" GridLines="Vertical">
           <ClientSettings AllowExpandCollapse = "true"  EnableRowHoverStyle="true">
               <Scrolling AllowScroll="True" UseStaticHeaders="True" SaveScrollPosition="True" />
               <Selecting AllowRowSelect="false" />                
           </ClientSettings>
           <PagerStyle Mode="NumericPages"></PagerStyle>
            <MasterTableView ClientDataKeyNames="ProgramId" Name="Programs" Width="100%" GridLines="Vertical" NoMasterRecordsText="" ShowHeadersWhenNoRecords="false">
               <Columns>
               <telerik:GridTemplateColumn UniqueName="CheckBoxTemplateColumn">
                           <HeaderTemplate>
                            <asp:CheckBox id="headerChkbox" OnCheckedChanged="ToggleSelectedState" AutoPostBack="True" runat="server"></asp:CheckBox>
                           </HeaderTemplate>
                           <ItemTemplate>
                               <asp:CheckBox id="cbSelect" OnCheckedChanged="ToggleRowSelection" AutoPostBack="True" runat="server"></asp:CheckBox>
                           </ItemTemplate>
                       </telerik:GridTemplateColumn>
                  <telerik:GridBoundColumn SortExpression="ProgramId" HeaderText="Program ID" DataField="ProgramId" UniqueName="ProgramId" Visible="false" />
                                   <telerik:GridTemplateColumn UniqueName="ProgramName" HeaderText="Program Name" DataField="ProgramName" HeaderStyle-Width="280px">
                                       <ItemTemplate>
                                           <asp:Label ID="lblProgramName" runat="server" Text='<%#(Eval("ProgramName").ToString().Length >39)?Eval("ProgramName").ToString().Substring(0, 39) + "...":Eval("ProgramName") %>' />
                                           <telerik:RadToolTip ID="ProgramNameToolTip" runat="server" TargetControlID="lblProgramName" Width="150px"
                                           RelativeTo="Element" Position="MiddleRight" EnableShadow="true"><%# Eval("ProgramName") %></telerik:RadToolTip>
                                       </ItemTemplate>
                                   </telerik:GridTemplateColumn>
                                   <telerik:GridBoundColumn SortExpression="ProgramEffectiveDate" AllowSorting = "false" HeaderText="Eff. Date" DataField="ProgramEffDate" DataFormatString="{0:MM/dd/yyyy}" />
                                   <telerik:GridBoundColumn SortExpression="ProgramExpiryDate" AllowSorting = "false" HeaderText="Exp. Date" DataField="ProgramExpDate" DataFormatString="{0:MM/dd/yyyy}" />
                                   <telerik:GridBoundColumn SortExpression="FSGOfficeName" AllowSorting = "false"  HeaderText="FSG Office" DataField="FSGOfficeName" />
                                   <telerik:GridBoundColumn SortExpression="FSGProgramTeamName" AllowSorting = "false" HeaderText="FSG Team" DataField="FSGTeamName" />
                                   <telerik:GridTemplateColumn Reorderable="false" Resizable="false">
                                       <HeaderStyle Width="20px" />
                                       <ItemStyle Width="20px" HorizontalAlign="Center" />                                        
                                   </telerik:GridTemplateColumn>
               </Columns>
               <NestedViewTemplate>
                   <div class="programBackground">
                       <telerik:RadGrid ID="radGridPolicyList" AllowMultiRowSelection="true" runat="server" AutoGenerateColumns="false" OnNeedDataSource="RadGrid_NeedDataSource" OnItemCommand="RadGrid_ItemCommand">
                       <ClientSettings AllowExpandCollapse = "true"  EnableRowHoverStyle="true">
                           <Scrolling AllowScroll="True" UseStaticHeaders="True" SaveScrollPosition="True" />
                           <Selecting AllowRowSelect="false" />                
                       </ClientSettings>
                           <MasterTableView ClientDataKeyNames="PolicyId" Name="Policies" Width="100%" GridLines="Vertical" NoMasterRecordsText="" ShowHeadersWhenNoRecords="false">                                    
                                               <Columns>
                                               <telerik:GridTemplateColumn UniqueName="CheckBoxTemplateColumn">                                                
                                               <ItemTemplate>
                                               <asp:CheckBox id="cbSelect" OnCheckedChanged="ToggleRowSelection" AutoPostBack="True" runat="server"></asp:CheckBox>
                                               </ItemTemplate>
                                                   </telerik:GridTemplateColumn>
                                                   <telerik:GridBoundColumn SortExpression="PolicyId" HeaderText="PolicyId" DataField="PolicyId" UniqueName="PolicyId" Visible="false" />
                                                   <telerik:GridBoundColumn SortExpression="PolicyNumber" HeaderText="Policy Number" DataField="PolicyNumber" />
                                                   <telerik:GridBoundColumn SortExpression="PolicyEffectiveDate" HeaderText="Policy Eff. Date" DataField="PolicyEffectiveDate" />
                                                   <telerik:GridBoundColumn SortExpression="PolicyExpiryDate" HeaderText="Policy Exp. Date" DataField="PolicyExpiryDate" />
                                                   <telerik:GridTemplateColumn Reorderable="false" Resizable="false">
                                                       <HeaderStyle Width="20px" />
                                                       <ItemStyle Width="20px" HorizontalAlign="Center" />                                                        
                                                   </telerik:GridTemplateColumn>
                                               </Columns>                               
                               <NoRecordsTemplate>The Program doesn't have Policies</NoRecordsTemplate>
                           </MasterTableView>
                           <ClientSettings AllowKeyboardNavigation = "true" >
                   <Scrolling AllowScroll="true" UseStaticHeaders="true" />
                   <Selecting AllowRowSelect="True"></Selecting>                
                 </ClientSettings>
                       </telerik:RadGrid>
                   </div>
               </NestedViewTemplate>
               <NoRecordsTemplate>There are no clients</NoRecordsTemplate>
           </MasterTableView>
           <ClientSettings AllowKeyboardNavigation = "true" >
                   <Scrolling AllowScroll="true" UseStaticHeaders="true" />
                   <Selecting AllowRowSelect="True"></Selecting>                
                 </ClientSettings>
       </telerik:RadGrid>

3 Answers, 1 is accepted

Sort by
0
Shinu
Top achievements
Rank 2
answered on 29 Feb 2012, 06:24 AM
Hello,

Try the following code.

C#:
protected void ToggleSelectedState(object sender, EventArgs e)
{
 GridNestedViewItem item = (GridNestedViewItem)RadGrid1.MasterTableView.GetItems(GridItemType.NestedView)[0];
 RadGrid grid = (RadGrid)item.FindControl("radGridPolicyList");
}

-Shinu.
0
Ranjit
Top achievements
Rank 1
answered on 05 Mar 2012, 04:18 PM

thank u very much for your reply.
I have come across another problem.
I am programmatically expanding a row of a hierarchical grid.

if ((sender as CheckBox).Checked)
            {
                foreach (GridDataItem dataItem in radGridProgramList.MasterTableView.Items)
                {
                    dataItem.Expanded = true;
                    (dataItem.FindControl("cbProgramSelect") as CheckBox).Checked = true;
                    dataItem.Selected = true;
  
                    GridNestedViewItem item = (GridNestedViewItem)radGridProgramList.MasterTableView.GetItems(GridItemType.NestedView)[dataItem.ItemIndex];
                    RadGrid radGridPolicyList = (RadGrid)item.FindControl("radGridPolicyList");
  
                    foreach (GridDataItem InnerdataItem in radGridPolicyList.MasterTableView.Items)
                    {
                        (InnerdataItem.FindControl("cbPolicySelect") as CheckBox).Checked = true;
                        InnerdataItem.Selected = true;
                    
  
                }

The data to the innergrid is bound through Item_command event. However the problem I am facing right now is,when I  expand the row programmatically the item command is not fired hence I am not getting any data.

protected void RadGrid_ItemCommand(object sender, GridCommandEventArgs e)
       {
           if (e.CommandName == RadGrid.ExpandCollapseCommandName)
           {
               GridDataItem item = e.Item as GridDataItem;
               if (!item.Expanded)
               {
                   GridNestedViewItem nestedItem = (GridNestedViewItem)item.ChildItem;
                   RadGrid grid = sender as RadGrid;
                   string nestedGridName = String.Empty;
                   string nestedGridAttributeName = String.Empty;
                   nestedGridName = "radGridPolicyList";
                   nestedGridAttributeName = "ProgramId";                            
                   if (!String.IsNullOrEmpty(nestedGridName))
                   {
                       RadGrid nestedGrid = (RadGrid)nestedItem.FindControl(nestedGridName);
                       nestedGrid.Attributes[nestedGridAttributeName] = ((GridDataItem)(nestedItem.ParentItem)).GetDataKeyValue(nestedGridAttributeName).ToString();
                       nestedGrid.Rebind();
                   }
               }
           }
       }
Please provid a solution
0
Shinu
Top achievements
Rank 2
answered on 07 Mar 2012, 02:52 PM
Hello,

You can attach NeedDataSource event to inner grid and bind it through the NeedDataSource event. In the inner grid NeedDataSource event, you can get reference to the outer grid expanded item, e.g. the parent item. Thus you can get a data field value of the expanded item and use it for retrieving the inner grid data source.

-Shinu.
Tags
Grid
Asked by
Ranjit
Top achievements
Rank 1
Answers by
Shinu
Top achievements
Rank 2
Ranjit
Top achievements
Rank 1
Share this question
or