国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

利用ASP.NET DataGrid顯示主次關系的數據

2024-07-10 12:55:49
字體:
來源:轉載
供稿:網友

大家在實際工作中有沒有遇到要在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設計器來說是必須的
<system.diagnostics.debuggerstepthrough()> 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"%>
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>顯示主次關系數據的例子</title>
<meta name="generator" content="microsoft visual studio.net 7.0">
<meta name="code_language" content="visual basic 7.0">
<meta name="vs_defaultclientscript" content="javascript">
<meta name="vs_targetschema" content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body>
<form id="frmdatagrid" method="post" runat="server">
<p align="center">
<asp:datagrid id="datagrid1" bordercolor="#0099ff" runat="server" showheader="false" width="470px" cellpadding="0" cellspacing="0" autogeneratecolumns="false" borderwidth="2px">
<columns>
<asp:templatecolumn>
<itemtemplate>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
<tr>
<td bgcolor="#ff6600"><b>訂單號:
<%# databinder.eval(container.dataitem, "orderid") %>
</b>
</td>
</tr>
<tr>
<td align="right">
<asp:datagrid id=datagrid2 runat="server" autogeneratecolumns="false" bordercolor="#33ff33" datakeyfield="orderid" datasource='<%# ctype(container.dataitem,datarowview).createchildview("orderrelation") %>'>
<headerstyle font-bold="true" forecolor="#cc0066" backcolor="#ffccff"></headerstyle>
<columns>
<asp:boundcolumn visible="false" datafield="orderid" readonly="true"></asp:boundcolumn>
<asp:templatecolumn headertext="產品名稱">
<headerstyle width="300px"></headerstyle>
<itemtemplate>
<%# databinder.eval(container.dataitem, "productname") %>
</itemtemplate>
</asp:templatecolumn>
<asp:boundcolumn datafield="unitprice" headertext="單價"></asp:boundcolumn>
<asp:boundcolumn datafield="quantity" headertext="數量"></asp:boundcolumn>
<asp:boundcolumn datafield="discount" headertext="折扣"></asp:boundcolumn>
</columns>
</asp:datagrid></td>
</tr>
</table>
</itemtemplate>
</asp:templatecolumn>
</columns>
</asp:datagrid></p>
</form>
</body>
</html>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丰都县| 岑巩县| 理塘县| 五原县| 广南县| 任丘市| 镇赉县| 沙河市| 大竹县| 垣曲县| 红原县| 海晏县| 扶沟县| 杭锦旗| 肥西县| 滕州市| 海伦市| 巩义市| 永康市| 松潘县| 南昌市| 巴彦淖尔市| 文山县| 宜宾县| 柳江县| 贵港市| 绥化市| 历史| 兰州市| 分宜县| 九龙坡区| 南安市| 富顺县| 米脂县| 南昌县| 长岭县| 高尔夫| 芜湖市| 宁南县| 汶上县| 枣阳市|