Nested-GridView

Un Nested-GridView est un contrôle GridView à l’intérieur de la ligne de grille du contrôle GridView parent.

Syntaxe

  • <asp:GridView ID=“gvParent” runat=“server”></asp:GridView>
  • <asp:GridView ID=“gvChild” runat=“server”></asp:GridView>

Paramètres

| gvParent | Il s’agit d’un contrôle gridview parent qui contient un gridview enfant comme le contrôle gvChild et d’autres contrôles dans la ligne gridview comme les étiquettes, les boutons, etc. | | ——– | ————————————————– ———————— | | gvEnfant | Il s’agit d’un contrôle enfant gridview qui peut également contenir d’autres contrôles comme dans le parent gridview. Il sera imbriqué dans le contrôle gridview gvParent. |

Gridview parent peut être lié à l’aide d’une simple fonction DataBind comme gvParent.DataBind();. Et pour lier Child gridview, vous devez le lier dans l’événement OnRowDataBound du parent gridview.

Liaison Nested-GridView avec DataSource, par ex. Tableau de données

  1. Conception de Nested-GridView (Code HTML):

    <asp:GridView ID=“gvParent” runat=“server” AutoGenerateColumns=“false” OnRowDataBound=“gvParent_RowDataBound”> <asp:TemplateField HeaderText=“Parent Column”> <asp:Label ID=“lblParent” runat=“server” Text=’<% #Bind(“parent”) %>’></asp:Label> <asp:GridView ID=“gvChild” AutoGenerateColumns=“false” runat=“server”> <asp:TemplateField HeaderText=“Child Column”> <asp:Label ID=“lblChild” runat=“server” Text=’<% #Bind(“child”) %>’></asp:Label> </asp:TemplateField> </asp:GridView> </asp:TemplateField> </asp:GridView>

  2. Liaison parent GridView dans l’événement Page_Load :

    DataTable cgv = new DataTable(); // define temporary a datatable for accessing in rowdatabound event protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { // Create a datatable as a DataSource of your GridViews DataTable dtParent = new DataTable(); // parent gridview datasource DataTable dtChild = new DataTable(); // child gridview datasource

         // Add column(s) in datatables and their names and data types
         dtParent.Columns.Add(new DataColumn("parent", typeof(string))); // parent column
         dtChild.Columns.Add(new DataColumn("child", typeof(string))); // child column
    
         // Add two records in parent datatable
         for (int i = 0; i < 2; i++)
             dtParent.Rows.Add("Parent" + i);
    
         // Add three records in child datatable
         for (int i = 0; i < 3; i++)
             dtChild.Rows.Add("Child" + i);
    
         cgv = dtChild; // set child datatable to temprary datatable
    
         gvParent.DataSource = dtParent; // set your parent datatable to parent gridview as datasource
         gvParent.DataBind(); // bind the gridview with datasource
     }
    

    }

  3. Liaison de l’enfant GridView dans l’événement OrRowDataBound du parent GridView.

    protected void gvParent_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { // find all child gridviews from parent GridView gvChild = ((GridView)e.Row.FindControl(“gvChild”));

         gvChild.DataSource = cgv; // set your child datatable to parent gridview as datasource
         gvChild.DataBind(); // bind the gridview with datasource
     }
    

    }

Après avoir lié Nested-GridView ressemble à :

[![entrez la description de l’image ici][1]][1]

[1] : https://i.stack.imgur.com/IMnlL.png