1

I have two gridviews - one nested in the other - and I am trying to set the datasource of the child grid programmaticly, but am not sure how to reference it.

<telerik:RadGrid ID="RadGridResults" runat="server" AutoGenerateColumns="true" OnNeedDataSource="RadGridResults_NeedDataSource">
    <MasterTableView>
        <NestedViewTemplate>
            <telerik:RadGrid ID="RadGridDetails" runat="server" AutoGenerateColumns="true">
            </telerik:RadGrid>
        </NestedViewTemplate>
    </MasterTableView>
</telerik:RadGrid>

I have tried this:

RadGrid radGridDetails = RadGridResults.FindControl("RadGridDetails") as RadGrid;
radGridDetails.DataSource = myList.ToList();

But this returns a NullReferenceException.

Can someone please show how I can accomplish this?

Sesame
  • 3,310
  • 16
  • 47
  • 75

3 Answers3

2

Just databind the collection directly:

<telerik:RadGrid ID="RadGridDetails" runat="server" AutoGenerateColumns="true"
    DataSource='<%# Eval("myList") %>'>
</telerik:RadGrid>
Servy
  • 197,813
  • 25
  • 319
  • 428
0

You can find any control inside a NestedViewTemplate by getting the grid's GridNestedViewItem. Here is how you reference the child grid programmatically:

var radGridDetails = 
    ((RadGridResults.MasterTableView.Items[0].ChildItem as GridNestedViewItem)
    .FindControl("RadGridDetails") as RadGrid);

I would still databind the grid as @Servy demonstrated, but for referencing the grid like you asked, the above code should work.

DanM7
  • 2,147
  • 3
  • 26
  • 45
0
object dataKeyValue = ((source as RadGrid).NamingContainer as DataItem).GetDataKeyValue("ID"); 

//use the dataKeyValue to fetch the correct Employee object

Nazik
  • 8,607
  • 26
  • 75
  • 122
bensuwait
  • 1
  • 2