0

나는 이런 식으로 뭔가 만들려고 노력하고 있어요 : 내가의 GridView에서 세부 정보 표시를 클릭하면마스터 세부 사항 GRIDVIEW의 asp.net C#을

Master detail gridview

을하지만 CS 파일에서이 줄을 나에게 오류를 제공합니다 :

gvRow.FindControl("GridView2").Visible = true; 

세부 정보 표시를 클릭하면 ID_Proba가있는 다른 테이블의 이름을 첫 번째 테이블의 ID로 볼 수 있습니다.

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="id" DataSourceID="SqlDataSource1" 
    onselectedindexchanged="GridView1_SelectedIndexChanged"> 
    <Columns> 
     <asp:BoundField 
     DataField="id" 
     HeaderText="id" 
     ReadOnly="True" 
     SortExpression="id" InsertVisible="False" /> 
     <asp:BoundField 
     DataField="name" 
     HeaderText="name" 
     SortExpression="name" /> 
     <asp:CommandField ShowSelectButton="True" 
       SelectText="Show Details"/> 
    </Columns> 
    <EmptyDataTemplate> 
     <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" 
      DataKeyNames="id" DataSourceID="SqlDataSource2" Visible="False"> 
      <Columns> 
       <asp:BoundField DataField="id" 
           HeaderText="id" 
           SortExpression="id" InsertVisible="False" ReadOnly="True" /> 
       <asp:BoundField DataField="id_proba" 
           HeaderText="id_proba" 
           SortExpression="id_proba" /> 
       <asp:BoundField DataField="name" 
           HeaderText="name" 
           SortExpression="name" /> 
      </Columns> 
     </asp:GridView> 
    </EmptyDataTemplate> 
</asp:GridView> 
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ProbaConnectionString %>" 
    SelectCommand="SELECT * FROM [Proba1]"></asp:SqlDataSource> 
<asp:SqlDataSource ID="SqlDataSource2" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ProbaConnectionString %>" 
    SelectCommand="SELECT * FROM [proba3] WHERE ([id_proba] = @id_proba)"> 
    <SelectParameters> 
     <asp:Parameter Name="id_proba" Type="Int32" /> 
    </SelectParameters> 
</asp:SqlDataSource> 
</form> 

이것은 CS 파일입니다

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    foreach (GridViewRow gvRow in GridView1.Rows) 
    { 
     gvRow.FindControl("GridView2").Visible = true; 
    } 
    SqlDataSource2.SelectParameters[0].DefaultValue = GridView1.SelectedDataKey[0].ToString(); 
    GridView1.SelectedRow.FindControl("GridView2").Visible = true;  
} 

답변

0

당신은 EmptyDataTemplate에서 "GridView2"를 가지고 가고 TemplateField에 넣어해야합니다. 데이터가있는 경우 EmptyDataTemplate은 전혀 생성되지 않으며이 템플릿은 전체 그리드 용이므로 각 행에 그리드가 없습니다.

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="id" DataSourceID="SqlDataSource1" 
    onselectedindexchanged="GridView1_SelectedIndexChanged"> 
    <Columns> 
     <asp:BoundField 
     DataField="id" 
     HeaderText="id" 
     ReadOnly="True" 
     SortExpression="id" InsertVisible="False" /> 
     <asp:BoundField 
     DataField="name" 
     HeaderText="name" 
     SortExpression="name" /> 
     <asp:CommandField ShowSelectButton="True" 
       SelectText="Show Details"/> 
<asp:TemplateField> 
    <ItemTemplate> 
     <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" 
      DataKeyNames="id" DataSourceID="SqlDataSource2" Visible="False"> 
      <Columns> 
       <asp:BoundField DataField="id" 
           HeaderText="id" 
           SortExpression="id" InsertVisible="False" ReadOnly="True" /> 
       <asp:BoundField DataField="id_proba" 
           HeaderText="id_proba" 
           SortExpression="id_proba" /> 
       <asp:BoundField DataField="name" 
           HeaderText="name" 
           SortExpression="name" /> 
      </Columns> 
     </asp:GridView> 
    </ItemTemplate> 
<asp:TemplateField> 
</Columns> 
</asp:GridView> 
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ProbaConnectionString %>" 
    SelectCommand="SELECT * FROM [Proba1]"></asp:SqlDataSource> 
<asp:SqlDataSource ID="SqlDataSource2" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ProbaConnectionString %>" 
    SelectCommand="SELECT * FROM [proba3] WHERE ([id_proba] = @id_proba)"> 
    <SelectParameters> 
     <asp:Parameter Name="id_proba" Type="Int32" /> 
    </SelectParameters> 
</asp:SqlDataSource> 
</form> 
관련 문제