2012-05-22 3 views
0

안녕하세요, 저는 radgrid에 중첩 기능을 속이고 있습니다. 어떻게하면 RadItem의 부모 RadGrid에 중첩 된 rad 격자를 OnItemDataBound 이벤트에서 참조하고 바인딩 할 수 있습니까? 내가 코드 네임드 RadGrid의 내부 격자 바늘

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> 

코드 숨김 :

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(); 
     } 
    } 

감사 인사 ance ...

답변

2

GridDataItem 대신 GridNestedViewItem으로 캐스팅해야합니다.

protected void RowBound(object sender, GridItemEventArgs e) 
{ 
    if (e.Item is GridNestedViewItem) 
    { 
     GridNestedViewItem item = e.Item as GridNestedViewItem; 
    } 
} 
관련 문제