首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
goodboy1881 (13)
wangchinaking (58)
iiprogram (67)
fancyhf (1)
harrymeng (41)
yjz0065 (113)
coofucoo (105)
Drate (69)
lphpc (30)
smallnest (61)
CSDN - 文档中心 - .NET 阅读:6092   评论: 0    参与评论
标题   DataGrid Web控件深度历险(1)     选择自 chinapro 的 Blog
关键字   DataGrid
出处   http://aspnet.4guysfromrolla.com/articles/040502-1.aspx

DataGrid Web控件深度历险(1)

 

这篇文章是一系列关于使用DataGrid Web控件文章的第一部分。ASP.Net DataGrid Web控件可将数据库信息显示在HTML表格中,并且功能强大。在最简单的情形下DataGrid显示HTML表格框架,但是它可被增强以显示丰富的用户界面,可根据数据库的列进行排序,甚至允许对数据库结果进行分页!所有这些有趣的主题将在今后一系列文章中涉及。

从数据库中获取表格信息并将其显示在一个HTML表格中是传统ASP编程中最普通的任务之一。在传统ASP编程中需要通过多行交织的HTML和代码实现上述功能。下面的原形代码显示了这些代码通常的形式。

Create Database Connection
Populate a recordset based on some SQL query
Output the HTML table header (<table ...>)
Loop through the recordset
  Emit the HTML for a table row
  ...
Emit the HTML table footer (</table>)

 

如果你是一个ASP开发人员,你也许多次编写了上述代码。ASP.Net的优点之一就是它包含很多Web控件。这些产生HTMLWeb控件提供了一个可编程的接口,它允许开发人员将代码和内容分离,并在代码中将产生HTML的实体作为对象使用。也就是说,如果我们需要通过ASP.Net显示一些HTML内容,将编写如下的代码:

<script language="vb" runat="server">
  sub Page_Load(sender as Object, e as EventArgs)
    lblMessage.Text = "Hello, World!"
  end sub
</script>

<asp:label runat="server" id="lblMessage" />

这里带有runat=”server”属性(类似于HTML标记)lblMessage Web控件被放置在HTML中。然后,在Page_Load事件处理程序中(该事件处理程序在每次页面装载时被调用)lblMessageText属性被设置为”Hello World”。此处对于Web控件的使用,实现了代码和内容的分离。在传统的ASP中,需要将<%="Hello, World!"%>放置在HTML中合适的位置才能达到同样的效果。

 

DataGrid基础

要在ASP.Net Web页面中加入DataGrid,只需执行如下代码:

<asp:datagrid runat="server" id="ID_of_DataGrid" />

这里的id值将作为在服务器端代码中使用DataGrid的名称,我们通过将上述语法放置在HTML中来使用DataGrid。但是为了让DataGrid显示任何有用的信息,我们需要将DataGrid绑定到一些信息的集合。这些信息的集合可以是任何支持IEnumerable接口的对象。它包括Arrays,集合类(ArrayList ,Hashtable)Datasets和其它很多对象。由于希望集中精力显示数据库信息,因此在本文中我们仅关注将DataGrid绑定至DatareaderDatareader类似于传统ADO/ASP中顺序的(forward-only)记录集。(如需了解在ADO.Net中读取数据库结果至Datareaders中,请阅读Efficiently Iterating Through Results from a Database Query using ADO.NET )

那么如何将数据绑定至DataGrid?其实出奇的简单。第一件事是提取数据库数据至datareader.对于本例,我使用ASPFAQs.com数据库,并且提取最受欢迎的10个问题。一旦将数据提取至datareader,datareader绑定至DataGrid只需两行代码。第一行将DataGridDatasource属性设置为Datareader;第二行调用DataGridDataBind方法,代码如下所示:

 

<% @Import Namespace="System.Data" %>
<% @Import Namespace="System.Data.SqlClient" %>
<script language="vb" runat="server">
  Sub Page_Load(sender as Object, e as EventArgs)
    BindData()
  End Sub 
   
  Sub BindData()
    '1. Create a connection
    Dim myConnection as New SqlConnection(
          ConfigurationSettings.AppSettings("connectionString"))

    '2. Create the command object, passing in the SQL string
    Const strSQL as String = "sp_Popularity"
    Dim myCommand as New SqlCommand(strSQL, myConnection)

    'Set the datagrid's datasource to the datareader and databind
    myConnection.Open()
    dgPopularFAQs.DataSource = myCommand.ExecuteReader(
                              CommandBehavior.CloseConnection)
    dgPopularFAQs.DataBind()
  End Sub
</script>

<asp:datagrid id="dgPopularFAQs" runat="server" />

运行结果如下:

Simple DataGrid Demo
This demo shows how to bind the results of a query to an unformatted DataGrid. 

 

FAQID

Description

ViewCount

SubmittedByName

Submitted

ByEmail

Date

Entered

CatName

144

Where can I host my ASP Web site for free (similar to GeoCities or Tripod or any of the many other free Web site sites)?

161056

Scott Mitchell

mitchell@4guysfromrolla.com

3/20/2001 2:53:45 AM

Getting Started

181

How can I format numbers and date/times using ASP.NET? For example, I want to format a number as a currency.

123888

Scott Mitchell

mitchell@4guysfromrolla.com

1/19/2002 3:12:07 PM

ASP.NET

 

 

 

 

 

 

 

首先注意用于编写数据绑定的代码数量不多。我们创建一个连接,指定一个SQL命令(这里使用一个存储过程,sp_Popularity),打开数据库连接,设定DataGridDataSource属性为Datareader,最后调用DataGridDataBind方法。这种做法完全将代码从内容分离,没有像在传统ASP中混合HTML表格和DataReader输出的语法。

花些时间看一下运行结果。你会发现DataGrid使用HTML表格显示数据库内容,尽管并不美观。虽然我们完成了显示数据这一主要工作,但用户界面方面还有很多工作。幸运的是美化DataGrid的结果出奇的简单。遗憾的是需要等到下一篇文章中作介绍。

 

总结

这是一系列关于DataGrid使用文章的一部分,我们研究了DataGrid最基本的功能:熟悉ASP.Net Web页面和显示绑定数据库结果。遗憾的是DataGrid的输出并不美观。但是我们不久会看到美化DataGrid的结果很简单。另外我们还将会在接下来的文章中看到更多用户界面的高级选项,如数据库结果的分页显示,DataGrid结果的排序和其它功能。

 


相关文章
对该文的评论