分享
 
 
 

在ASP.Net中创建动态表格

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

摘要: DataGrid 控件是与 ASP.net Page Framework 一起发行的数据绑定的服务器控件。本文使用 DataGrid 来建立包含动态表格视图的 Web 页面。还探讨控件所提供功能的各个方面,包括选择、删除、分页和模板列 ,而控件就是使用这些功能来建立最终的页面的。

简介

DataGrid 控件可以用于若干个只读数据。该控件可用于数据表格布局的输出进行简化。还提供多个机制,用于通过超级链接及其对选择、排序、分页和原地编辑和其它特性的支持,为输出添加交互性。这使得该控件在若干的常见 Web 应用方案中很有用,诸如列表、购物车和查询结果。

DataGrid 还提供一些功能,这些功能具有 ASP.NET 架构所特有的所有服务器控件的特点。该控件包含进行与浏览器无关的输出所需的逻辑,同时提供了一个统一的编程模型,从而能够处理回传数据,以及对请求之间的状态进行管理。这样,开发者就可以针对带有属性、方法和事件的对象模型进行编程,而不必处理直接用 HTML编程所带来的不一致性和复杂性。

我们要建立什么?

本文举出了一系列的示例页面,彼此结合,从而最终生成一个页面,该页面以示例数据库的 Authors 表和 Titles 表为依据,提供主/详细资料视图(该数据库随 Microsoft SQL Server?2000 一起发运)。序列中的每个页面均介绍 DataGrid 控件的一个新的特性或功能。下图从 pubs 数据库抽取出来的。

主/详细资料视图似于 Microsoft Access 所介绍的窗体/子窗体概念。也类似于随 Microsoft Visual InterDev 6.0 一起发表的 DataForm Wizard (数据窗体向导)。主/详细资料视图显示一到多的关系结果,其中视图的一个部分显示第一个查询或主查询的结果。然后跟踪一个选择,以筛选所使用的第二个查询的结果,从而在视图的另一部分显示选择内容的详细资料。

图 1. 完成的页面

图 1 将 Author 列表显示在页面的上半部分,并将关于所选作者的详细资料(包括相关书名)显示在下半部分。 Authors 列表和 Titles 均是用 DataGrid 控件加以表示的。 显示作者的 DataGrid 举例说明如何进行选择、排序、和分页。显示书名的 DataGrid 演示如何进行原地编辑、格式化和定制列。

数据访问

为了使示例自成一体,从 SQL Server 抽取数据并将该数据连同其架构信息一同保留为一个 XML 文件 TitlesDB.XML。下面是该文件的一个片断。

<root>

<schema id="DocumentElement" targetNamespace=""

xmlns="http://www.w3.org/1999/XMLSchema"

xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">

<element name="Author">

<complexType content="elementOnly">

<element name="au_id" type="string" minOccurs="1"

maxOccurs="1"></element>

<element name="au_name" type="string" minOccurs="1"

maxOccurs="1"></element>

<element name="address" type="string" minOccurs="0"

maxOccurs="1"></element>

<element name="city" type="string" minOccurs="0"

maxOccurs="1"></element>

<element name="state" type="string" minOccurs="0"

maxOccurs="1"></element>

<element name="zip" type="string" minOccurs="0"

maxOccurs="1"></element>

<element name="phone" type="string" minOccurs="0"

maxOccurs="1"></element>

</complexType>

<unique name="AuthorConstraint" msdata:PrimaryKey="True">

<selector>.</selector>

<field>au_id</field>

</unique>

</element>

<element name="Title">

<complexType content="elementOnly">

<element name="title_id" type="string" minOccurs="1"

maxOccurs="1"></element>

<element name="au_id" type="string" minOccurs="1"

maxOccurs="1"></element>

<element name="title" type="string" minOccurs="1"

maxOccurs="1"></element>

<element name="price" msdata:DataType="System.Currency"

type="string"

minOccurs="1" maxOccurs="1"></element>

<element name="pubdate" type="timeInstant" minOccurs="1"

maxOccurs="1"></element>

</complexType>

<unique name="TitleConstraint" msdata:PrimaryKey="True">

<selector>.</selector>

<field>title_id</field>

</unique>

<key name="AuthorTitle">

<selector>../Author</selector>

<field>au_id</field>

</key>

<keyref refer="AuthorTitle">

<selector>.</selector>

<field>au_id</field>

</keyref>

</element>

</schema>

<DocumentElement>

<Author>

<au_id>154-00-1300</au_id>

<au_name>John Doe</au_name>

<phone>425 705 1234</phone>

<address>One Microsoft Way</address>

<city>Redmond</city>

<state>CA</state>

<zip>98005</zip>

</Author>

<Title>

<title_id>BU1032</title_id>

<au_id>213-46-8915</au_id>

<title>The Busy Executive's Database Guide</title>

<price>19.99</price>

<pubdate>1991-06-12T07:00:00</pubdate>

</Title>

</DocumentElement>

</root>

这些样例简化了数据访问,从而将重点全部放在 DataGrid 的使用上。上面的 XML 被加载进一个 DataSet。 DataSet 为数据提供高速缓存,从而可以进行筛选、排序和编辑等等各种操作。下面的代码来自 Global.asax,用于加载 DataSet 和将其保存为 Session 状态。

public void Session_OnStart() {

// 将样例中所用的数据载入会话范围的 DataSet.

FileStream fs = null;

DataSet ds = null;

try {

fs = new FileStream(Server.MapPath("Data\\TitlesDB.xml"),

FileMode.Open, FileAccess.Read);

ds = new DataSet();

ds.ReadXml(fs);

} finally {

if (fs != null) {

fs.Close();

fs = null;

}

}

Session["AppData"] = ds;

}

在实际的 Web 应用程序中,通常不是使用处于 Session 或 Application 状态的高速缓存数据,而是通过所存储的过程、中间层业务对象,或通过调用 Web 服务所揭示的方法来访问和修改数据。无论采取怎样的手段来访问数据,您会发现你依旧以同样的方式来编程和与控件的对象模型进行进行交互。

第 1 步: 一个基本的 DataGrid

序列的第一步展示了一个页面,其中包含单独一个 DataGrid 控件,用于显示来自数据源的一个只读图书列表。

图 2. 完成第 1 步后的页面

DataGrid 声明来自:

<%@ ReGISter TagPrefix="cr" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web" %>

<%@ Page Language="VB" AutoEventWireup="false" Codebehind="Borrow.ASPx.vb" Inherits="borrrow.Borrow"%>

<%@ Register TagPrefix="cr" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD>

<title>档案、图书流通管理</title>

<meta content="Microsoft Visual Studio.net 7.0" name="GENERATOR">

<meta content="Visual Basic 7.0" name="CODE_LANGUAGE">

<meta content="JavaScript" name="vs_defaultClientScript">

<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">

</HEAD>

<body bgColor="beige" MS_POSITIONING="GridLayout">

<form id="Form1" method="post" runat="server">

<asp:label id="Label14" style="Z-INDEX: 101; LEFT: 100px; POSITION: absolute; TOP: -50px" runat="server" Width="47px" Height="18px"></asp:label>

<asp:linkbutton id="LinkFind" style="Z-INDEX: 105; LEFT: 361px; POSITION: absolute; TOP: 182px" runat="server" Width="33px" Height="22px" ToolTip="按此进行查询" ForeColor="#0000C0">查询</asp:linkbutton>

<TABLE style="Z-INDEX: 104; LEFT: 133px; WIDTH: 637px; POSITION: absolute; TOP: 75px; HEIGHT: 74px" cellSpacing="1" cellPadding="1" width="637" border="1">

<TR>

<TD style="WIDTH: 92px">

<asp:label id="lblFind1" runat="server" ForeColor="Green">检索号</asp:label>

</TD>

<TD st

[1] [2] [3] [4] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有