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

DetailTables count is 0

5 Answers 92 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Brendan Vogt
Top achievements
Rank 1
Brendan Vogt asked on 03 Oct 2008, 10:57 AM
Hi,

I have a DetailTables in my grid, and each row in the DetailTables has a checkbox.  I am strugging to loop through each row to see if the checkbox is selected or not.  I have tried looking for a suitable example but could not find any.  Here is my code:

protected void btnClientAccounts_Click(object sender, EventArgs e)
{
   foreach (GridDataItem item in rgResults.MasterTableView.DetailTables[0].Items)
   {
      CheckBox chkSelectAccount = (CheckBox)item.FindControl("chkSelectAccount");
   }
}

The item coun stays 0.  I'm not sure.

Please can some one help me?

Thanks
Brendan

5 Answers, 1 is accepted

Sort by
0
Shinu
Top achievements
Rank 2
answered on 03 Oct 2008, 11:11 AM
Hi Brendan,

Try achieving the desired scenario as shown below.

CS:
protected void btnClientAccounts_Click(object sender, EventArgs e) 
   
  foreach (GridDataItem item in RadGrid1.MasterTableView.Items) 
        { 
            if (item.Expanded) 
            { 
 
                GridTableView nestedView = ((GridDataItem)item).ChildItem.NestedTableViews[0]; 
                foreach (GridItem childitem in nestedView.Items) 
                { 
                    CheckBox chkSelectAccount = (CheckBox)childitem.FindControl("chkSelectAccount"); 
                } 
                 
            } 
        } 
 


Regards
Shinu.
0
Brendan Vogt
Top achievements
Rank 1
answered on 03 Oct 2008, 11:59 AM
Thanks it works just fine.  Now the next question that I have is the following.  In the DetailTables I have set DataKeyNames="AcctNo".  Now how do I get this value back for each row?  I thought it would be something in the line of (which I used to get the parent row):

dataItem.GetDataKeyValue("AcctNo");

Please can you advise.

Thanks
Brendan
0
Princy
Top achievements
Rank 2
answered on 03 Oct 2008, 12:34 PM
Hello Brendan,

You need to set the Name property of the DetailTable and then check for the property to get the DataKeyValues. Check out the code snippet below.
aspx:
<telerik:RadGrid ID="RadGrid1" DataSourceID="SqlDataSource1" runat="server" >        
  <MasterTableView DataSourceID="SqlDataSource1" Name="Master" >        
     <DetailTables> 
        <telerik:GridTableView DataKeyNames="Age" Name="Detail" DataSourceID="SqlDataSource1" runat="server">        
                
        </telerik:GridTableView> 
      </DetailTables>        
   </MasterTableView> 
</telerik:RadGrid> 

cs:
 protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) 
    { 
        if (e.Item is GridDataItem && e.Item.OwnerTableView.Name == "Detail") 
        { 
            string strtxt = (e.Item as GridDataItem).GetDataKeyValue("Age").ToString(); 
        } 
    } 

Princy.

0
Brendan Vogt
Top achievements
Rank 1
answered on 03 Oct 2008, 12:42 PM
I need to loop through each row in DataTables to get the ID.  Here is my code, I need to loop through it when you click on the button:

foreach (GridDataItem item in rgResults.MasterTableView.Items)
{
   if (item.Expanded)
   {
      GridTableView nestedView = ((GridDataItem)item).ChildItem.NestedTableViews[0];

      foreach (GridItem childitem in nestedView.Items)
      {
         CheckBox chkSelectAccount = (CheckBox)childitem.FindControl("chkSelectAccount");
        
         if (chkSelectAccount.Checked)
         {
            // Get the account number
            // Here is where I am trying to get the account number
            //object acctInfo = childitem.OwnerTableView.DataKeyValues[0];
            Account account = new Account();
            //account.AccountNumber = 
         }
      }
   }
}
0
Shinu
Top achievements
Rank 2
answered on 06 Oct 2008, 10:55 AM
Hi Brendan,

Try the following code snippet to get the DatakeyValue for the checked items in  the Detail table on a button click.

CS:
 protected void Button1_Click(object sender, EventArgs e) 
    { 
 
        foreach (GridDataItem item in RadGrid2.MasterTableView.Items)  
        {  
            if (item.Expanded)  
            {  
  
                GridTableView nestedView = ((GridDataItem)item).ChildItem.NestedTableViews[0];  
                foreach (GridDataItem childitem in nestedView.Items)  
                {  
                    CheckBox chkSelectAccount = (CheckBox)childitem.FindControl("chkSelectAccount"); 
                    if (chkSelectAccount.Checked) 
                    { 
                        string StrKey = childitem.GetDataKeyValue("KeyName").ToString(); 
                    } 
                }  
                  
            }  
        }  
  
 
    } 


Thanks
Shinu.
Tags
Grid
Asked by
Brendan Vogt
Top achievements
Rank 1
Answers by
Shinu
Top achievements
Rank 2
Brendan Vogt
Top achievements
Rank 1
Princy
Top achievements
Rank 2
Share this question
or