引用嵌套控件

时间:2014-01-27 19:13:18

标签: c# asp.net gridview telerik nested

我有两个网格视图 - 一个嵌套在另一个网格视图中 - 我试图以编程方式设置子网格的数据源,但我不确定如何引用它。

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

有人可以说明我是如何做到这一点的吗?

3 个答案:

答案 0 :(得分:2)

直接对数据集进行数据绑定:

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

答案 1 :(得分:0)

您可以通过获取网格NestedViewTemplateGridNestedViewItem中找到任何控件。以下是以编程方式引用子网格的方法:

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