天天看點

ASP.NET中GridView中嵌套GridView

//aspx頁面

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" GridLines="None"

                                    ShowHeader="False" OnRowDataBound="GridView2_RowDataBound">

               <Columns>

                     <asp:TemplateField>

                             <ItemTemplate>

                                 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true">

                                 </asp:GridView>

                              </ItemTemplate>

                      </asp:TemplateField>

              </Columns>

  </asp:GridView>

//aspx.cs頁面

protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e)

    {

        if (e.Row.RowType == DataControlRowType.DataRow)

        {

            GridView Grd = e.Row.Cells[0].FindControl("GridView1") as GridView;

            Grd.DataSource = 資料集;

            Grd.DataBind();

        }       

    }

*******************************************************************

gridview嵌套gridview

++++++++++.aspx代碼++++++++++++++++

OnRowDataBound事件,與1.x中的ItemDataBound有一腿.

 <!--第一層GridView開始-->

    <asp:GridView ID="GridView1"  OnRowDataBound="GridView1_RowDataBound"  AutoGenerateColumns=false runat="server">

      <Columns>

        <asp:TemplateField>

        <ItemTemplate> 

           <%#Container.DataItem.ToString()%>

               <!--第二層GridView開始-->

               <asp:GridView ID="GridView2" OnRowDataBound="GridView2_RowDataBound"   AutoGenerateColumns=false runat="server">          

                 <Columns>

                  <asp:TemplateField>

                  <ItemTemplate> 

                      <%#Container.DataItem.ToString()%>

                       <!--第三層GridView開始-->

                      <asp:GridView ID="GridView3"  AutoGenerateColumns=false runat=server>

                           <Columns>

                             <asp:TemplateField>

                             <ItemTemplate> 

                              <%#Container.DataItem.ToString()%>

                             </ItemTemplate>

                             </asp:TemplateField>                    

                           </Columns>

                        </asp:GridView>

                       <!--第三層GridView 結束-->

                   </ItemTemplate>

                  </asp:TemplateField>

                 </Columns>

                </asp:GridView>

              <!--第二層GridView結束-->

          </ItemTemplate>

          </asp:TemplateField>

         </Columns>

        </asp:GridView>

         <!--第一層GridView結束-->

++++++++++.cs代碼++++++++++++++++

RowDataBound與1.x中的ItemDataBound也有一腿!

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Collections;

public partial class _Default : System.Web.UI.Page 

{

    protected void Page_Load(object sender, EventArgs e)

        this.GridView1.DataSource = Al("GridView1Item:");

        this.GridView1.DataBind();

    //DataSource

    protected ArrayList Al(string GetStr)

        ArrayList al = new ArrayList();

        for(int i=0;i<2;i++)

            al.Add(GetStr+i.ToString());

        }

        return al;

    //GridView1_RowDataBound

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

            GridView gv = (GridView)e.Row.FindControl("GridView2");

            gv.DataSource = Al("GridView2Item:");

            gv.DataBind();

    //GridView2_RowDataBound

    protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e)

            GridView gv = (GridView)e.Row.FindControl("GridView3");

            gv.DataSource = Al("GridView3Item:");

}