2014-01-27 3 views
1

У меня есть два вида сетки - один вложен в другой - и я пытаюсь установить источник данных дочерней сетки программно, но не уверен, как ссылаться на него.Ссылка на вложенный элемент управления

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

Может кто-нибудь, пожалуйста, покажет, как я могу это сделать?

ответ

2

Просто привязка коллекции непосредственно:

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

Вы можете найти какой-либо контроль внутри NestedViewTemplate на получение сетки-х GridNestedViewItem. Вот как вы ссылаетесь ребенок сетка программна:

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

Я бы еще DataBind сетки, как это демонстрируется @Servy, но для ссылки на сетке, как вы просили, приведенный выше код должен работать.

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

// использовать dataKeyValue принести правильный объект Employee

Смежные вопросы