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

祝编程快乐!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值