2014-01-27 53 views
1

我有两个gridviews - 一个嵌套在另一个 - 我试图设置子网格的数据源程序化,但我不知道如何引用它。引用嵌套控件

<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> 

我已经试过这样:

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

但这返回一个NullReferenceException。

有人可以请说明我该如何做到这一点?通过获取网格的GridNestedViewItem

<telerik:RadGrid ID="RadGridDetails" runat="server" AutoGenerateColumns="true" 
    DataSource='<%# Eval("myList") %>'> 
</telerik:RadGrid> 

回答

2

就直接进行数据绑定集合。这里是你如何引用子网格编程:

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

我仍然会作为数据绑定证明@Servy电网,但对于引用电网就像你问,上面的代码应该工作。

0

你可以找到一个NestedViewTemplate内的任何控制:

0
object dataKeyValue = ((source as RadGrid).NamingContainer as DataItem).GetDataKeyValue("ID"); 

//使用dataKeyValue来获取正确Employee对象