C# asp.net中嵌套列表中的嵌套网格视图

C# asp.net中嵌套列表中的嵌套网格视图,c#,asp.net,gridview,C#,Asp.net,Gridview,我有一个员工列表,其中每个列表项还包含他们访问不同部门的时间(打孔次数)列表 我希望在GridView(ID:GridView1)中显示数据,该GridView包含ID和名称的BoundField列,以及嵌套GridView(ID:GridView2)的TemplateField列,该列将显示部门、班次和时间的列表 public class PunchInfo { public string DepartmentName { get; set; }

我有一个员工列表,其中每个列表项还包含他们访问不同部门的时间(打孔次数)列表

我希望在GridView(ID:GridView1)中显示数据,该GridView包含ID和名称的BoundField列,以及嵌套GridView(ID:GridView2)的TemplateField列,该列将显示部门、班次和时间的列表

    public class PunchInfo
    {
        public string DepartmentName { get; set; }
        public int Shift { get; set; } 
        public DateTime Time { get; set; }
    }

    public class Employees
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public List<PunchInfo> Punches { get; set; }
    }

公共类PunchInfo
{
公共字符串DepartmentName{get;set;}
公共int移位{get;set;}
公共日期时间{get;set;}
}
公营雇员
{
公共字符串Id{get;set;}
公共字符串名称{get;set;}
公共列表打孔{get;set;}
}
我希望在.cs文件中执行此操作,但我不知道如何将数据绑定到网格

            /* EmployeeList is List<Employees> */
            GridView1.DataSource = EmployeeList;  
            GridView gv2 = GridView1.FindControl("GridView2") as GridView;
            /* How to bind the EmployeeList[row_idx].Punches to the nested GridView2 object? */
            GridView1.DataBind();
/*员工列表是列表*/
GridView1.DataSource=EmployeeList;
GridView gv2=GridView1.FindControl(“GridView2”)作为GridView;
/*如何将EmployeeList[row_idx].Punchs绑定到嵌套的GridView2对象*/
GridView1.DataBind();

谢谢

您不需要
查找控件
GridView2,只需在
.aspx
中添加
数据源
元素即可

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False">
 <Columns>
     <asp:TemplateField HeaderText="Id">
         <ItemTemplate>
            <asp:Label ID="Label1" runat="server" Text='<%# Eval("Id") %>'></asp:Label>
        </ItemTemplate>
     </asp:TemplateField>
     <asp:TemplateField HeaderText="Name">
        <ItemTemplate>
            <asp:Label ID="Label2" runat="server" Text='<%# Eval("Name") %>'></asp:Label>
        </ItemTemplate>
     </asp:TemplateField>
     <asp:TemplateField HeaderText="Puches">
        <ItemTemplate>
            <asp:GridView ID="DetailGridView" runat="server" AutoGenerateColumns="False" DataSource='<%# Eval("Punches") %>'>
                 <Columns>
                     <asp:TemplateField HeaderText="Department Name">
                         <ItemTemplate>
                            <asp:Label ID="Label3" runat="server" Text='<%# Eval("DepartmentName") %>'></asp:Label>
                        </ItemTemplate>
                     </asp:TemplateField>
                     <asp:TemplateField HeaderText="Shift">
                        <ItemTemplate>
                            <asp:Label ID="Label4" runat="server" Text='<%# Eval("Shift") %>'></asp:Label>
                        </ItemTemplate>
                     </asp:TemplateField>
                     <asp:TemplateField HeaderText="Time">
                        <ItemTemplate>
                            <asp:Label ID="Label5" runat="server" Text='<%# Eval("Time") %>'></asp:Label>
                        </ItemTemplate>
                     </asp:TemplateField>
                 </Columns>
             </asp:GridView>
        </ItemTemplate>
     </asp:TemplateField>
 </Columns>
</asp:GridView>
我的可行例子是:

.aspx

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False">
 <Columns>
     <asp:TemplateField HeaderText="Id">
         <ItemTemplate>
            <asp:Label ID="Label1" runat="server" Text='<%# Eval("Id") %>'></asp:Label>
        </ItemTemplate>
     </asp:TemplateField>
     <asp:TemplateField HeaderText="Name">
        <ItemTemplate>
            <asp:Label ID="Label2" runat="server" Text='<%# Eval("Name") %>'></asp:Label>
        </ItemTemplate>
     </asp:TemplateField>
     <asp:TemplateField HeaderText="Puches">
        <ItemTemplate>
            <asp:GridView ID="DetailGridView" runat="server" AutoGenerateColumns="False" DataSource='<%# Eval("Punches") %>'>
                 <Columns>
                     <asp:TemplateField HeaderText="Department Name">
                         <ItemTemplate>
                            <asp:Label ID="Label3" runat="server" Text='<%# Eval("DepartmentName") %>'></asp:Label>
                        </ItemTemplate>
                     </asp:TemplateField>
                     <asp:TemplateField HeaderText="Shift">
                        <ItemTemplate>
                            <asp:Label ID="Label4" runat="server" Text='<%# Eval("Shift") %>'></asp:Label>
                        </ItemTemplate>
                     </asp:TemplateField>
                     <asp:TemplateField HeaderText="Time">
                        <ItemTemplate>
                            <asp:Label ID="Label5" runat="server" Text='<%# Eval("Time") %>'></asp:Label>
                        </ItemTemplate>
                     </asp:TemplateField>
                 </Columns>
             </asp:GridView>
        </ItemTemplate>
     </asp:TemplateField>
 </Columns>
</asp:GridView>