2012-05-22 3 views
0

Привет, я обманываю себя с помощью функции вложенности на radgrid. Как я могу ссылаться и привязывать сетку rad, вложенную в родительский Radgrid в событие OnItemDataBound.Привязать внутреннюю сетку вложенной RadGrid от CodeBehind

Я попытался

var doc_grid = (RadGrid) item["doc_grid"].Controls[0]; 
    var doc_grid = (RadGrid)RadGrid1.FindControl("doc_grid"); 

ли я реф в NestView ...

Вот общая суть кода ...

<telerik:RadGrid ID="outerGrid" DataSourceID="SQL_Outer" runat="server" AutoGenerateColumns="True" OnItemDataBound="RowBound" DataKeyNames="MatNo" 
     ShowGroupPanel="True"> 
     <MasterTableView DataSourceID="SQL_Outer" AllowMultiColumnSorting="True" DataKeyNames="MatNo" GroupLoadMode="Server"> 
      <Columns> 
       <%--Stuff--%> 
      </Columns> 
      <NestedViewSettings DataSourceID="SqlDataSource2"> 
       <ParentTableRelation> 
        <telerik:GridRelationFields DetailKeyField="sysid" MasterKeyField="MatNo" /> 
       </ParentTableRelation> 
      </NestedViewSettings> 
      <NestedViewTemplate> 

      <asp:Panel ID="NestedViewPanel" runat="server" CssClass="viewWrap"> 
       <div class="contactWrap"> 
       <telerik:RadGrid ID="doc_grid" runat="server"> 
        <MasterTableView AutoGenerateColumns="False" DataKeyNames="sysid"> 
         <%--Stuff--%> 
        </MasterTableView> 
       </telerik:RadGrid> 
       </div> 
      </asp:Panel> 

      </NestedViewTemplate> 
     </MasterTableView> 
    </telerik:RadGrid> 

CodeBehind:

protected void RowBound(object sender, GridItemEventArgs e) 
{ 
    if (e.Item is GridDataItem) 
    { 
     var item = (GridDataItem)e.Item; 
     var mat_no = item.GetDataKeyValue("MatNo"); 

     //!!!!I Can't figure out how to Reference the Inner RadGrid!!!! 
     //var doc_grid = (RadGrid) item["doc_grid"].Controls[0]; 
     var doc_grid = (RadGrid)RadGrid1.FindControl("doc_grid"); 

     using (var con = new SqlConnection()) 
     { 
      con.ConnectionString = ConfigurationManager.ConnectionStrings["TimeMatters11ConnectionString"].ConnectionString; 
      var cmd = new SqlCommand("SELECT sysid, ccode, [desc], [View] = '<a href=\"'+ filename + '\">View Doc</a>' " + 
            "FROM lntmu11.document " + 
            "WHERE mat_no = @matno", con); 
      cmd.Parameters.AddWithValue("@matno", mat_no); 
      con.Open(); 
      var reader = cmd.ExecuteReader(); 
      doc_grid.DataSource = reader; 
      doc_grid.DataBind(); 
      con.Close(); 
     } 
    } 

Thanks in Adv ance ...

ответ

2

Вам нужно сделать как GridNestedViewItem вместо GridDataItem.

protected void RowBound(object sender, GridItemEventArgs e) 
{ 
    if (e.Item is GridNestedViewItem) 
    { 
     GridNestedViewItem item = e.Item as GridNestedViewItem; 
    } 
} 
Смежные вопросы