日期:2010-05-09  浏览次数:20487 次

  在上一节中我们介绍了<%#  %> 语法,这种情况是Web 窗体有了明确的数据源,即Page.DataBind。这一小节我们来了解DataBind方法。

    DataBind方法是ASP.NET中一个很重要的概念,几乎所有的控件都需要它控制数据的操作,它的作用是在为控件指定数据源后,执行数据绑定操作。在上一章的DataSet对象实例中我们已经使用过,利用这个方法为DataGrid控件绑定数据,即DataGrid.DataBind()。

    ASP.NET可以使用DataBind方法来绑定数据的控件除了DataGrid,Repeater,DataList三个专用的数据绑定控件以外,还有些数据集合性质的Web控件,包括DropDownList,ListBox等,用来指定的数据源一般为数组(ArrayList)、哈稀表(HashTable)、数据表(DataTable)、 数据视图(DataView)和DataReader等。

    下面我们利用这个方法为ListBox控件绑定数据源。

    首先建立实例运行环境。打开Visual Studio.NET 2003 ,新建一个Web项目,命名为DataCon,新建一个窗体,命名为LBDataBind.aspx。在LBDataBind.aspx窗体中添加一个ListBox控件,如图9.1所示。


图9.1  为LBDataBind.aspx添加ListBox控件

LBDataBind.aspx页面的主要HTML代码如下:
<form id="Form1" method="post" runat="server"> 
 <asp:ListBox id="ListBox1"  runat="server"></asp:ListBox>
</form>
在LBDataBind.aspx的逻辑代码文件(LBDataBind.aspx.vb)中的Page_Load事件过程代码如下:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '在此处放置初始化页的用户代码
        Dim i, j As Int16  '声明两个整型变量,用于循环
        Dim rd As Random = New Random
        '声明一个随机变量,并实例化
        Dim str As String
        '声明一个字符串变量,用于生成的随机字符
        Dim arr As ArrayList = New ArrayList
        '声明一个数组,用来存放字符串
        For i = 1 To 20
            '执行外循环,每一次循环,生成一个项
            str = "第" & i & "项--"
            For j = 1 To 5
                '执行内循环,循环5次,
                '成生一个5个随机大写字母的字符串
                str += Chr(rd.Next(65, 90))
            Next
            arr.Add(str)
            '添加到数组中
            str = ""
        Next
        ListBox1.DataSource = arr
        '为LisBox1指定数据源
        ListBox1.DataBind()
        '使用DataBind方法,为控件绑定数据
End Sub
保存编译,运行结果如图9.2所示。


图9.2  LBDataBind.aspx运行结果

    在上面这个实例中,我们使用了一个ListBox控件,但是我们并没有设置<asp:ListItem>属性,为其添加项目。在LBDataBind.aspx的逻辑代码里,我们利用随机数生成了一个含有20个项的数组(ArryList),我们为ListBox1指定这个数组为数据源,并使用DataBind方法为其执行数据绑定,这样就利用编程的方式实现了ListBox控件的数据绑定操作。

    在上一节里,我们学习了<%# %> 语法,这里我们演示一下利用aspx文件的Page.DataBind 方法实现对整个页面的数据绑定。一旦aspx的整个页面被绑定后,页面内的数据都在监视之中。

    在DataCon Web项目里新建一个窗体,命名为PageDataBind.aspx。在PageDataBind.aspx里添加一个DropDownList控件,主要HTML代码如下:
<body MS_POSITIONING="GridLayout">
 <form id="Form1" method="post" runat="server"