GridView inside GridView

来源:互联网 发布:远程服务器监控软件 编辑:程序博客网 时间:2024/06/05 05:18

以下代码演示gridView嵌套:

<%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="WebForm1.aspx.cs"Inherits="GridViewInsideGridView.WebForm1" %>

 

<!DOCTYPEhtml>

 

<htmlxmlns="http://www.w3.org/1999/xhtml">

 

<headid="Head1"runat="server">

 

   <title>Gridview within Gridivew - Nested gridview example in asp.net </title>

 

   <scriptlanguage="javascript"type="text/javascript">

 

       function divexpandcollapse(divname) {

 

           var div = document.getElementById(divname);

 

           var img = document.getElementById('img' + divname);

 

           if (div.style.display == "none") {

 

                div.style.display ="inline";

 

                img.src ="minus.gif";

 

            }else {

 

                div.style.display ="none";

 

                img.src ="plus.gif";

 

            }

        }

   </script>

 

</head>

 

<body>

 

   <formid="form1"runat="server">

 

       <div>

 

           <asp:GridViewID="gvParentGrid"runat="server"DataKeyNames="CountryId"Width="300"

 

               AutoGenerateColumns="false"OnRowDataBound="gvUserInfo_RowDataBound"GridLines="None"BorderStyle="Solid"BorderWidth="1px"BorderColor="#df5015">

 

               <HeaderStyleBackColor="#df5015"Font-Bold="true"ForeColor="White"/>

 

               <RowStyleBackColor="#E1E1E1"/>

 

               <AlternatingRowStyleBackColor="White"/>

 

               <HeaderStyleBackColor="#df5015"Font-Bold="true"ForeColor="White"/>

 

               <Columns>

 

                   <asp:TemplateFieldItemStyle-Width="20px">

 

                       <ItemTemplate>

 

                           <ahref="JavaScript:divexpandcollapse('div<%# Eval("CountryID") %>');">

 

                               <imgid='imgdiv<%# Eval("CountryID") %>'width="9px"border="0"src="plus.gif"/>

 

                           </a>

 

                       </ItemTemplate>

 

                   </asp:TemplateField>

 

                   <asp:BoundFieldDataField="CountryId"HeaderText="CountryId"HeaderStyle-HorizontalAlign="Left"/>

 

                   <asp:BoundFieldDataField="CountryName"HeaderText="CountryName"HeaderStyle-HorizontalAlign="Left"/>

 

                   <asp:TemplateField>

 

                       <ItemTemplate>

 

                           <tr>

 

                               <tdcolspan="100%">

 

                                   <divid='div<%# Eval("CountryID") %>'style="display:none;position:relative;left:15px;overflow:auto">

 

                                       <asp:GridViewID="gvChildGrid"runat="server"AutoGenerateColumns="false"BorderStyle="Double"BorderColor="#df5015"GridLines="None"Width="250px">

 

                                           <HeaderStyleBackColor="#df5015"Font-Bold="true"ForeColor="White"/>

 

                                           <RowStyleBackColor="#E1E1E1"/>

 

                                           <AlternatingRowStyleBackColor="White"/>

 

                                           <HeaderStyleBackColor="#df5015"Font-Bold="true"ForeColor="White"/>

 

                                           <Columns>

 

                                               <asp:BoundFieldDataField="StateID"HeaderText="StateID"HeaderStyle-HorizontalAlign="Left"/>

 

                                               <asp:BoundFieldDataField="SateName"HeaderText="StateName"HeaderStyle-HorizontalAlign="Left"/>

 

                                           </Columns>

 

                                       </asp:GridView>

 

                                   </div>

 

                               </td>

 

                           </tr>

 

                       </ItemTemplate>

 

                   </asp:TemplateField>

 

               </Columns>

 

           </asp:GridView>

 

       </div>

 

   </form>

 

</body>

 

</html>

using System;

 

using System.Collections.Generic;

 

using System.Data;

 

using System.Data.SqlClient;

 

using System.Linq;

 

using System.Web;

 

using System.Web.UI;

 

using System.Web.UI.WebControls;

 

namespace GridViewInsideGridView

 

{

   publicpartialclassWebForm1 : System.Web.UI.Page

 

    {

       SqlConnection con = newSqlConnection(@"Data Source=(localdb)\Projects;Initial Catalog=DemoDB;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False");

 

       protectedvoid Page_Load(object sender, EventArgs e)

 

        {

           if (!IsPostBack)

 

            {

                BindGridview();

            }

        }

       // This method is used to bind gridview from database

 

       protectedvoid BindGridview()

 

        {

            con.Open();

           SqlCommand cmd = newSqlCommand("select TOP 4 CountryId,CountryName from Country", con);

 

           SqlDataAdapter da = newSqlDataAdapter(cmd);

 

           DataSet ds = newDataSet();

 

            da.Fill(ds);

            con.Close();

            gvParentGrid.DataSource = ds;

            gvParentGrid.DataBind();

 

 

 

        }

       protectedvoid gvUserInfo_RowDataBound(object sender, GridViewRowEventArgs e)

 

        {

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

 

            {

                con.Open();

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

 

               int CountryId = Convert.ToInt32(e.Row.Cells[1].Text);

 

               SqlCommand cmd = newSqlCommand("select * from State where CountryID=" + CountryId, con);

 

               SqlDataAdapter da = newSqlDataAdapter(cmd);

 

               DataSet ds = newDataSet();

 

                da.Fill(ds);

                con.Close();

                gv.DataSource = ds;

                gv.DataBind();

            }

        }

    }

}

 

原创粉丝点击