您的位置:首页 > 编程语言 > ASP

asp.net GridView 三层嵌套

2009-11-25 18:17 246 查看
 GridView 三层嵌套,借鉴了网上的两层的代码,然后自己加工了一下,数据库用的是Northwind。

实现效果:



Code:

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 Microsoft.Practices.EnterpriseLibrary.Common;
using Microsoft.Practices.EnterpriseLibrary.Data;
using System.Data.Common;
using System.IO;
public partial class _Default : System.Web.UI.Page
{

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{

demo();

}

}
private void demo()
{
string sql = "select  top 10 * from dbo.Customers";
Database db = DatabaseFactory.CreateDatabase();
DbCommand dcmd = db.GetSqlStringCommand(sql);
DataSet ds = db.ExecuteDataSet(dcmd);
this.GridView2.DataSource = ds.Tables[0];
this.GridView2.DataBind();
}

protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e)
{
Database dbgv = DatabaseFactory.CreateDatabase();
GridViewRow row = e.Row;
string strSort = string.Empty;
if (row.DataItem == null)
{
return;
}
GridView gv = new GridView();
GridView gv4 = new GridView();
gv = (GridView)row.FindControl("GridView3");
if (e.Row.RowType == DataControlRowType.DataRow)
{

string datakey = this.GridView2.DataKeys[e.Row.RowIndex].Value.ToString();
string sql = "select  top 10 * from dbo.Orders where CustomerID='" + datakey + "'";
DbCommand dcmdgv = dbgv.GetSqlStringCommand(sql);
DataSet ds = dbgv.ExecuteDataSet(dcmdgv);
gv.DataSource = ds.Tables[0];
gv.DataBind();
}

}

protected void GridView3_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
{
GridViewRow row = e.Row;
GridView gv4 = new GridView();
GridView gv3 = new GridView();
GridView gvBrand = e.Row.Parent.Parent as GridView;
string datakey = gvBrand.DataKeys[e.Row.RowIndex].Value.ToString();
gv4 = (GridView)row.FindControl("GridView4");
Database dbgv = DatabaseFactory.CreateDatabase();
DbCommand dcmd_dg4 = dbgv.GetSqlStringCommand("select * from dbo.[Order Details] where OrderID='"+datakey+" '");
DataSet ds2 = dbgv.ExecuteDataSet(dcmd_dg4);
gv4.DataSource = dbgv.ExecuteDataSet(dcmd_dg4).Tables[0];
gv4.DataBind();

}
}
}

}


<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" EnableEventValidation="false" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>GridView应用</title>
<mce:style  media=print><!--
.Noprint{display:none;}
.PageNext{page-break-after:   always;}
--></mce:style><style  media=print mce_bogus="1">.Noprint{display:none;}
.PageNext{page-break-after:   always;}</style>
<mce:script language=javascript type="text/javascript"><!--
function expandcollapse(obj,row)
{
var div = document.getElementById(obj);
var img = document.getElementById('img' + obj);

if (div.style.display == "none")
{
div.style.display = "block";
if (row == 'alt')
{
img.src = "minus.gif";
}
else
{
img.src = "minus.gif";
}

}
else
{
div.style.display = "none";
if (row == 'alt')
{
img.src = "plus.gif";
}
else
{
img.src = "plus.gif";
}

}
}

// --></mce:script>
</head>
<body>
<mce:script language="javascript" type="text/javascript"><!--

// --></mce:script>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView2" runat="server" BackColor="White" BorderColor="#3366CC"
BorderStyle="None" BorderWidth="1px" CellPadding="4" Width="100%" AutoGenerateColumns="False" DataKeyNames="CustomerID" OnRowDataBound="GridView2_RowDataBound">
<RowStyle BackColor="White" ForeColor="#003399" />
<FooterStyle BackColor="#99CCCC" ForeColor="#003399" />
<PagerStyle BackColor="#99CCCC" ForeColor="#003399" HorizontalAlign="Left" />
<SelectedRowStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" />
<HeaderStyle BackColor="#003399" Font-Bold="True" ForeColor="#CCCCFF" />
<Columns>
<asp:TemplateField>
<ItemTemplate>
<a href="javascript:expandcollapse('div<%# Eval(" mce_href="javascript:expandcollapse('div<%# Eval("CustomerID") %>', 'one');">
<img src="plus.gif" mce_src="plus.gif"  id="imgdiv<%# Eval("CustomerID") %>"/>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="CompanyName" HeaderText="CompanyName" />
<asp:BoundField DataField="ContactName" HeaderText="ContactName" />
<asp:BoundField DataField="Address" HeaderText="Address" />
<asp:BoundField DataField="Country" HeaderText="Country" />
<asp:TemplateField>

<ItemTemplate>
<tr>
<td colspan="100%">
<div id="div<%# Eval("CustomerID") %>" style="display:none;position:relative;left:15px;OVERFLOW: auto;WIDTH:97%" >
<asp:GridView ID="GridView3" AllowPaging="True" AllowSorting="true" BackColor="White" Width=100% Font-Size=X-Small
AutoGenerateColumns=false Font-Names="Verdana" runat="server" DataKeyNames="OrderID" ShowFooter=true
GridLines=None OnRowDataBound="GridView3_RowDataBound"
BorderStyle=Double BorderColor="#0083C1">
<RowStyle BackColor="Gainsboro" />
<AlternatingRowStyle BackColor="White" />
<HeaderStyle BackColor="#0083C1" ForeColor="White"/>
<FooterStyle BackColor="White" />
<Columns>
<asp:TemplateField >
<ItemTemplate>
<a href="javascript:expandcollapse('div<%# Eval(" mce_href="javascript:expandcollapse('div<%# Eval("OrderID") %>', 'one');">
<img src="plus.gif" mce_src="plus.gif"  id="imgdiv<%# Eval("OrderID") %>"/>
</ItemTemplate>

</asp:TemplateField>
<asp:TemplateField HeaderText="Order ID" >
<ItemTemplate>
<asp:Label ID="lblOrderID" Text='<%# Eval("CustomerID") %>' runat="server">ada</asp:Label>
</ItemTemplate>

</asp:TemplateField>
<asp:TemplateField HeaderText="Freight">
<ItemTemplate><%# Eval("Freight")%></ItemTemplate>

</asp:TemplateField>
<asp:TemplateField HeaderText="Shipper Name" >
<ItemTemplate><%# Eval("ShipName")%></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Ship Address" >
<ItemTemplate><%# Eval("ShipAddress")%></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<ItemTemplate>
<tr>
<td>
<div id="div<%# Eval("OrderID") %>" style="display:none;position:relative;left:15px;OVERFLOW: auto;WIDTH:97%" >
<asp:GridView ID="GridView4" AllowPaging="True" AllowSorting="true" BackColor="White" Width=100% Font-Size=X-Small
AutoGenerateColumns=false Font-Names="Verdana" runat="server" DataKeyNames="OrderID" ShowFooter=true
GridLines=None   BorderStyle=Double BorderColor="#0083C1">
<RowStyle BackColor="Gainsboro" />
<AlternatingRowStyle BackColor="White" />
<HeaderStyle BackColor="#0083C1" ForeColor="White"/>
<FooterStyle BackColor="White" />
<Columns>
<asp:TemplateField HeaderText="Order ID" SortExpression="OrderID">
<ItemTemplate>
<asp:Label ID="lblOrderID" Text='<%# Eval("OrderID") %>' runat="server"></asp:Label>
</ItemTemplate>

</asp:TemplateField>
<asp:TemplateField HeaderText="ProductID" >
<ItemTemplate><%# Eval("ProductID")%></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Quantitye" SortExpression="ShipName">
<ItemTemplate><%# Eval("Quantity")%></ItemTemplate>

</asp:TemplateField>
<asp:TemplateField HeaderText="Discount">
<ItemTemplate><%# Eval("Discount")%></ItemTemplate>
</asp:TemplateField>

</Columns>
</asp:GridView>
</div>
</td>
</tr>
</ItemTemplate>
</asp:TemplateField>

</Columns>
</asp:GridView>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

</div>

</form>
</body>
</html>


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息