All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
Sql,server,2005的XML最佳实施策略(4)_[SQL,Server教程]
ASP.NET实现投票结果的图片进度条显示代码_.net资料_编程技术
SQL循序渐进(4)-------创建表_[SQL,Server教程]
总结:ADO.NET在开发中的部分使用方法和技巧_[Asp.Net教程]
Asp.net数据库操作类,c#_[Asp.Net教程]
VBScript教程第六课,VBScript运算符_JavaScript技术_编程技术
.NET字符串的特点,正则表达式在其中如何运用_.net资料_编程技术
.NET内置对象之Server对象_[Asp.Net教程]
asp.net2.0内置Application对象的应用
精妙的SQL语句_[SQL,Server教程]
Reading number is top 10 pictures
The terra-cotta warriors1
The world's top ten most beautiful railway station2
The money of more than 100 countries and regions4
Fury xp desktop theme
Ashlynn Brooke show proud chest measurement1
China's programmers are live what kind, had a look at will know that
BingBingFan apple dew point photo gallery1
教你做读书笔记
宝贝系列
青春清纯美女大集合4
Download software ranking
塘西风月痕
WebService在.NET中的实战应用教学视频 → 第5集
I'm come from Beijing1
双旗镇刀客B
Boxer vs Yellow2
linux安装大全
asp.net技术内幕
Professional killers2 for Android
实战黑客不求人
Red cliff
delv published in(发表于) 2014/1/23 3:13:50 Edit(编辑)
利用ASP.NET,DataGrid显示主次关系的数据_[Asp.Net教程]

利用ASP.NET,DataGrid显示主次关系的数据_[Asp.Net教程]

利用ASP.NET DataGrid显示主次关系的数据_[Asp.Net教程]

大家在实际工作中有没有遇到要在DataGrid中显示带有主次结构的数据呢?如果你对ADO.NET和SQL Server2000熟悉的话,我们下面就举一个利用VS.NET自带的示例数据库Northwind和VB.NET来说明如何实现这一目标。
首先,我们先准备要显示的带有主次结构的数据。
下面就是要绑定到HierarchicalDataGrid.aspx的VB.NET代码文件HierarchicalDataGrid.aspx.vb的内容:


Imports System.Data.SqlClient


Public Class HierarchicalDataGrid
Inherits System.Web.UI.Page
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid


#Region " Web Form Designer Generated Code "


'下面的调用对Web Form设计器来说是必须的
Private Sub InitializeComponent()


End Sub


Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 这个方法是为Web Form设计器调用的
'不要用代码编辑器改变这里.
InitializeComponent()
End Sub


#End Region


Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


'打开数据库连接
Dim OrdersConnection As New SqlConnection("Server=(local)\NetSDK;Database=northwind;Trusted_Connection=yes")


'得到订单和订单详细信息
Dim OrderAdapter As New SqlDataAdapter("Select * from Orders; select OrderID ,Products.ProductName,[order Details].Unitprice,[order Details].Quantity,[order Details].discount from [order Details],Products where [Order Details].ProductId=Products.ProductID", OrdersConnection)


'创建并填充DataSet对象
Dim OrderDataSet As New DataSet()


OrderAdapter.Fill(OrderDataSet)


'设定表名字
OrderDataSet.Tables(0).TableName = "Orders"
OrderDataSet.Tables(1).TableName = "Order Details"


'在基于OrderID字段的两个表之间建立父子关系
Dim Parent As DataColumn = OrderDataSet.Tables("Orders").Columns("OrderID")
Dim Child As DataColumn = OrderDataSet.Tables("Order Details").Columns("OrderID")


Dim OrderRelation As DataRelation = New DataRelation("OrderRelation", Parent, Child, False)


'为DataSet添加关系
OrderDataSet.Relations.Add(OrderRelation)


'把DataGrid绑定到Orders表
DataGrid1.DataSource = OrderDataSet.Tables("Orders").DefaultView
DataBind()


End Sub


Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
e.Item.Cells(0).BackColor = System.Drawing.Color.Ivory
End Sub
End Class


在HierarchicalDataGrid.aspx中,我们为DataGrid1建立模板列,并把另外一个DataGrid嵌入到这个模板列,父一级的DataGrid用来显示主记录,比如:订单。子一级DataGrid用来显示详细信息,比如:订单的详细信息。我们这样为子DataGrid动态指定数据源:


DataSource='<%# Ctype(Container.DataItem,DataRowView).CreateChildView("OrderRelation") %>'>


上面这句就是实现显示主次关系数据的关键。根据当前父一级记录,DataRowView.CreateChildView利用前面创建的关系的名字作为参数获得子记录,并把它绑定到子DataGrid上。


下面就是我们要显示的ASPX页面的代码,HierarchicalDataGrid.aspx:


<%@ Page Language="vb" AutoEventWireup="false" Codebehind="HierarchicalDataGrid.aspx.vb" Inherits="HierarchicalDataGrid.HierarchicalDataGrid" %>
<%@ Import namespace="System.Data"%>



显示主次关系数据的例子

















订单号:
<%# DataBinder.Eval(Container.DataItem, "OrderID") %>
















<%# DataBinder.Eval(Container.DataItem, "ProductName") %>



















在VS.NET里创建名字为HierarchicalDataGrid的VB.NET ASPX应用程序,输入上面的代码,就可以看到下面的结果:



ASP.NET 2.0版本代码


C#


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





无标题页



Width="470px" CellPadding="0" CellSpacing="0" AutoGenerateColumns="False" BorderWidth="2px"
OnItemDataBound="DataGrid1_ItemDataBound">









订单号:
<%# Eval("OrderID") %>









DataKeyField="OrderID" DataSource='<%# ((System.Data.DataRowView)Container.DataItem).CreateChildView("OrderRelation") %>'>






<%# Eval("ProductName") %>




















using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;


public partial class _Test_Default : System.Web.UI.Page
{
protected void Page_Load( object sender, EventArgs e )
{
SqlConnection OrdersConnection = new SqlConnection(@"User ID=sa;Password=;Initial Catalog=NorthWind;Server=(local)");
SqlDataAdapter OrderAdapter = new SqlDataAdapter("Select * from Orders; select OrderID ,Products.ProductName,
[order Details].Unitprice,[order Details].Quantity,[order Details].discount from [order Details],Products
where [Order Details].ProductId=Products.ProductID", OrdersConnection);
DataSet OrderDataSet = new DataSet();
OrderAdapter.Fill(OrderDataSet);
OrderDataSet.Tables[0].TableName = "Orders";
OrderDataSet.Tables[1].TableName = "Order Details";
DataColumn Parent = OrderDataSet.Tables["Orders"].Columns["OrderID"];
DataColumn Child = OrderDataSet.Tables["Order Details"].Columns["OrderID"];
DataRelation OrderRelation = new DataRelation("OrderRelation", Parent, Child, false);
OrderDataSet.Relations.Add(OrderRelation);
DataGrid1.DataSource = OrderDataSet.Tables["Orders"].DefaultView;
DataBind();
}
protected void DataGrid1_ItemDataBound( object sender, DataGridItemEventArgs e )
{
e.Item.Cells[0].BackColor = System.Drawing.Color.Ivory;
}
}


VB.NET


<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default3.aspx.vb" Inherits="Default3" %>





无标题页



Width="470px" CellPadding="0" CellSpacing="0" AutoGenerateColumns="False" BorderWidth="2px">









订单号:
<%# Eval("OrderID") %>









DataKeyField="OrderID" DataSource='<%# CType(Container.DataItem,System.Data.DataRowView).CreateChildView("OrderRelation") %>'>






<%# Eval("ProductName") %>




















Partial Class Default3
Inherits System.Web.UI.Page


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim OrdersConnection As System.Data.SqlClient.SqlConnection =
New System.Data.SqlClient.SqlConnection("User ID=sa;Password=;Initial Catalog=NorthWind;Server=(local)")
Dim OrderAdapter As System.Data.SqlClient.SqlDataAdapter = New
System.Data.SqlClient.SqlDataAdapter("Select * from Orders; select OrderID ,Products.ProductName,
[order Details].Unitprice,[order Details].Quantity,[order Details].discount from [order Details],
Products where [Order Details].ProductId=Products.ProductID", OrdersConnection)
Dim OrderDataSet As System.Data.DataSet = New System.Data.DataSet()
OrderAdapter.Fill(OrderDataSet)
OrderDataSet.Tables(0).TableName = "Orders"
OrderDataSet.Tables(1).TableName = "Order Details"


Dim Parent As System.Data.DataColumn = OrderDataSet.Tables("Orders").Columns("OrderID")
Dim Child As System.Data.DataColumn = OrderDataSet.Tables("Order Details").Columns("OrderID")
Dim OrderRelation As System.Data.DataRelation = New System.Data.DataRelation("OrderRelation", Parent, Child, False)
OrderDataSet.Relations.Add(OrderRelation)
DataGrid1.DataSource = OrderDataSet.Tables("Orders").DefaultView
DataBind()
End Sub


Protected Sub DataGrid1_ItemDataBound(ByVal sender As Object,
ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
e.Item.Cells(0).BackColor = System.Drawing.Color.Ivory
End Sub
End Class




来源: 孟宪会之精彩世界







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.