我有两个网格视图 - 一个嵌套在另一个网格视图中 - 我试图以编程方式设置子网格的数据源,但我不确定如何引用它。
<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。
有人可以说明我是如何做到这一点的吗?
答案 0 :(得分:2)
直接对数据集进行数据绑定:
<telerik:RadGrid ID="RadGridDetails" runat="server" AutoGenerateColumns="true"
DataSource='<%# Eval("myList") %>'>
</telerik:RadGrid>
答案 1 :(得分:0)
您可以通过获取网格NestedViewTemplate
在GridNestedViewItem
中找到任何控件。以下是以编程方式引用子网格的方法:
var radGridDetails =
((RadGridResults.MasterTableView.Items[0].ChildItem as GridNestedViewItem)
.FindControl("RadGridDetails") as RadGrid);
我仍然会像@Servy演示的那样对网格进行数据绑定,但是为了像你问的那样引用网格,上面的代码应该可以工作。
答案 2 :(得分:0)
object dataKeyValue = ((source as RadGrid).NamingContainer as DataItem).GetDataKeyValue("ID");
//使用dataKeyValue获取正确的Employee对象