Referencing nested control

拜拜、爱过 提交于 2019-12-18 09:34:41

问题


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?


回答1:


Just databind the collection directly:

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



回答2:


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.




回答3:


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

//use the dataKeyValue to fetch the correct Employee object



来源:https://stackoverflow.com/questions/21389575/referencing-nested-control

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!