`

考察DataGrid Web 控件 Part 1

阅读更多

本文英文原版:
http://aspnet.4guysfromrolla.com/articles/040502-1.aspx


考察DataGrid Web 控件 Part 1


导言:

经典ASP(classic ASP)的最常见的任务之一便是从数据库获取信息并展示在一个HTML表格里面.我们需要很多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.NET的优势在于其包含了很多的Web控件.这些编辑HTML的控件允许开发者将代码和内容分离,并在代码里将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" />


这里的label Web控件lblMessage看起来和HTML标签很类似,只是有一个runat="server"属性.在Page_Load事件处理器(每次登录页面时都会发生)里,lblMessage的Text属性被设置为"Hello, World!".我们在这里使用Web控件就达到了将代码从内容(content)分离的目的;如果是在经典ASP,为达到相同的效果,我们必须将<%="Hello, World!"%>放置在HTML内容的适当地方.

DataGrid控件比label控件更有用也更强大.DataGrid对绑定的HTML table相应地产生必需的HTML,就像随后我们将看到的那样,将数据绑定到DataGrid是很容易的;另外,通过小小的改动,我们就可以对外观进行定制,呈现出很漂亮的HTML表格( HTML tables).


DataGrid控件基础


要在ASP.NET Web页面上添加一个DataGrid控件,你仅仅需要添加如下的代码:

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

其中id值便是DataGrid控件的名字,当你在服务器端代码里引用该控件时就会用到它.为了使DataGrid展示我们所需要的有用东西,我们将把它绑定到某个信息集(collection of information),该信息集可以是任何支持IEnumerable界面的的对象,比如Arrays, collection classes(ArrayList, 哈希表等),DataSets, DataReaders以及其它的对象.
在本文,我们把DataGrid绑定到DataReader.它和ADO/ASP里的Recordset差不多.要了解使用ADO.NET将数据库查询结果写入DataReader的更多细节请参阅文章《read: Efficiently Iterating Through Results from a Database Query using ADO.NET》(译注:网址为http://aspnet.4guysfromrolla.com/articles/032702-1.aspx

那怎么样将数据绑定到DataGrid呢?非常简单!首先我们要创建一个包含数据库数据的DataReader控件.本例,我们使用ASPFAQs.com的数据库,返回10个最常见的FAQs(即常见问题解答).为将DataReader绑定到DataGrid,我只需要写2行代码.第一行代码将DataGrid控件的DataSource属性设置为DataReader;第二行代码调用DataGrid控件的DataBind方法.
要做的就是这些,就像下面的代码展示的那样:

<% @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" />

(注:查看示例的页面为http://aspnet.4guysfromrolla.com/articles/040502-1.aspx

我们注意到,实现数据绑定的代码一点也不多.在代码里我们创建了一个连接,指定一个SQL命令(在此为一个名为sp_Popularity的存储过程),打开数据库连接,将DataGrid的DataSource属性设置为返回的DataReader,最后调用DataGrid的DataBind方法.该方法完全实现了代码和内容的分离.与经典ASP相比,没有出现HTML table和DataReader的输出结果混杂在一起的情况(意既经典ASP没有实现代码和内容的分离)


花些时间来查看那个示例页面吧,DataGrid展示了我们想要的结果,虽然外观不太好看,但"显示数据"这个目的是达到了的。要美化界面也是很容易的,下一节我们就来探讨这个问题。


结语:
本节,我们考察了DataGrids的基础知识——怎样在页面添加控件并展示绑定的数据,不幸的是界面比较糟糕.然而,正如我们即将看到的那样,美化其界面简直是小菜一碟,另外我们将考察一些用户界面高级选项(比如分页,排序),当然这些是下一节的内容。

祝编程快乐!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics