您的位置:首页精文荟萃软件资讯 → ASP.NET讲座4-数据绑定DataBind

ASP.NET讲座4-数据绑定DataBind

时间:2004/10/8 13:15:00来源:本站整理作者:蓝点我要评论(0)

这一讲是ASP.net系列讲座中最重要的一讲,包括服务器控件,数据库操作等所有涉及操作数据的控件都会用到 DataBind,也就是说DataBind这一讲,已经开始讲ASP.net核心的问题了。其实DataBind的概念已经提出很长时间了,在ASP中也有应用,只是大家不是很注意而已。但在ASP.net中,已经把它提升到了一个核心的高度。

 

4.1 简单介绍 DataBind

 

DataBind包括三大方法,Repeater,DataList和DataGrid,这些控件都位于 System.Web.UI.WebControls 命名空间中,从 WebControl 基类中直接或间接派生出来的。这些方法都是通过HTML来显示数据的内容。

 

4.2 建立DataBind

 

所有的DataBind都应该用DataBind() 函数来建立(注意如果你用的是C#,请注意大小写)数据绑定,是整个页面PAGE和所有控件的一个方法,也就是说,他可以被所有的控件使用,你建立数据绑定的时候,DataBind可以作为控件的一个子项,比如DataList1.DataBind(),再比如 Page.DataBind(),会绑定整个页面。DataBind 常在页面载入时就被绑定。下面这个例子就是这个情况。

 

Protected Sub Page_Load(Src As Object, E As EventArgs)
DataBind()
End Sub

 

4.3开始使用简单的数据绑定

 

看这个例子:

 

<script language="VB" runat="server">
Sub SubmitBtn_Click(sender As Object, e As EventArgs)
Page.DataBind
End Sub
</script>

 

<B>帮韦小宝选择一个老婆</B>
<form runat=server>
<asp:DropDownList id="StateList" runat="server">
<asp:ListItem>阿珂</asp:ListItem>
<asp:ListItem>曾柔</asp:ListItem>
<asp:ListItem>建宁</asp:ListItem>
<asp:ListItem>沐公主</asp:ListItem>
<asp:ListItem>双儿</asp:ListItem>
<asp:ListItem>教主夫人</asp:ListItem>
</asp:DropDownList>
<asp:button Text="Submit" OnClick="SubmitBtn_Click" runat=server/>
<p>
您帮韦小宝选择的老婆是 :
<asp:label text='<%# StateList.SelectedItem.Text %>' runat=server/>
</form>

 

我们看到,那个选择老婆的地方没有使用什么控件,但是他却能正确的显示我们的选择结果,这个是就捆绑的结果,注意<%# StateList.SelectedItem.Text %>这句话,正是它让我们取得了捆绑的数据。更多的地方,我们会经常看到这样的例子,好像程序里面什么都没有,但数据已经绑定在上面了。
4.4 绑定一个数组,然后把它们用列表的方法排列出来。

 

<%@ Import namespace="System.Data" %>
<script language="VB" runat="server">
Sub Page_Load(sender As Object, e As EventArgs)
If Not IsPostBack Then
Dim values as ArrayList= new ArrayList()
values.Add ("阿珂")
values.Add ("曾柔")
values.Add ("建宁")
values.Add ("沐公主")
values.Add ("双儿")
values.Add ("教主夫人")
Dim dt As DataTable
Dim dr As DataRow
Dim i As Integer
'create a DataTable
dt = New DataTable
dt.Columns.Add(New DataColumn("编号", GetType(Integer)))
dt.Columns.Add(New DataColumn("类型", GetType(String)))
dt.Columns.Add(New DataColumn("是否", GetType(String)))
'Make some rows and put some sample data in
For i = 1 To 5
dr = dt.NewRow()
dr(0) = i
dr(1) = values(i-1).ToString()
If (i > 3) Then
dr(2) = "是"
Else
dr(2) = "否"
End If
'add the row to the datatable
dt.Rows.Add(dr)
Next
DataGrid1.DataSource = new DataView(dt)
DataGrid1.DataBind
End If
End Sub
</script>
<form runat=server>
<B>下面是韦小宝的老婆吗?</B>
<asp:DataGrid id="dataGrid1" runat="server"
BorderColor="black"
BorderWidth="1"
GridLines="Both"
CellPadding="3"
CellSpacing="0"
HeaderStyle-BackColor="#aaaadd"
/>
</form>

 

在这个例子里面,我们先建立了数据表 Dim dt As DataTable然后我们建立了行的概念Dim dr As DataRow,接着我们向行里面添加了数据,最后我们把行加到数据表里面,绑定DataView DataGrid1.DataSource = new DataView(dt) DataGrid1.DataBind这就是我们所做的工作,然后用DataGrid方法,我们生成了表。

 

注意:接收DataBind的控件,一般有DropDownList,DataList,DataGrid,ListBox这些集合性质的控件,而被捆绑的主要是ArrayList(数组),Hashtable(哈稀表),DataView(数据视图),DataReader这四个。

 

注意2:我们从数据绑定中取出数据来时,程序一般都是把他们转化为String,这样在写留言簿或者聊天室这样的程序的时候,就可以不进行数据处理了,但是有的时候,还是要进行数据转化,比如,我就是要Boolean,怎么办?有下列两种方法,一种是系统提供的一个函数:

 

<%# String.Format("{0:c}", (Container.DataItem.(" 转换类型") %> 可以达到转换的作用

 

另外绑定中也自带了一个方法 <%# DataBinder.Eval(Container.DataItem, "转换类型", "{0:c}") %>

 

4.5 DataBind的高级应用定义栏目

 

DataBind提供下列可以自己定义的栏目

 

Bound 用来控制数据命令和读出

 

HyperLink 让数据以超链的形式显示

 

Button 建立动态的数据按钮

 

Template 样本模板方式输出数据

 

下面我们各举例子:

 

Bound 控制显示表格的表头 (基本命令) 命令全部都加在<ASP:DataGrid> </ASP:DataGrid>之间(还是使用上面韦小宝的例子)

 

<property name="Columns">
<asp:BoundColumn HeaderText="老婆的编号" DataField="编号" />
<asp:BoundColumn HeaderText="老婆的名字" DataField="名字"/>
<asp:BoundColumn HeaderText="是否" DataField="是否"/>
</property>

 


 

 

 

 

 

你是否看到你的表单重复显示了两次? 这是因为你在<ASP:DataGrid>标签中没有AutoGenerateColumns="false"命令,默认的AutoGenerateColumns是为True的,也就是说它会自己产生表头,有的时候,这个是我们不需要的。

HyperLink 我们输出数据的时候,想对每个女子的名字下面加上超链,连接到介绍这个女子的页面,我们可以用HyperLink来做。



<property name="Columns">
<asp:BoundColumn HeaderText="编号" DataField="编号" />
<asp:HyperLinkColumn
HeaderText="名字"
DataNavigateUrlField="名字"
DataNavigateUrlFormatString="detailspage.aspx?id={0}"
DataTextField="名字"
Target="_new"
/>
<asp:BoundColumn HeaderText="是否" DataField="是否"/>
</property>







Button 这个是一个很有趣的例子

用<asp:ButtonColumn HeaderText="加入我中意的女子列表" Text="Add" CommandName="AddToCart" />

代替<asp:BoundColumn HeaderText="老婆的编号" DataField="编号" />

我们可以触发 AddToCart事件,来控制其他事件的运行。

Template 建立一个样板




<property name="Columns">
<asp:TemplateColumn HeaderText="详细资料">
<template name="ItemTemplate">
<asp:hyperlink id=HyperLink1
NavigateUrl = "detailspage.aspx?id={0}" runat="server">
点这里查看详细资料
</asp:hyperlink>
</template>
</asp:TemplateColumn>
<asp:BoundColumn HeaderText="老婆的名字" DataField="名字"/>
<asp:BoundColumn HeaderText="是否" DataField="是否"/>
</property>







4.6 如何在DataBind生成的表中排序

在ASP:DataGrid标签中加入下面两条AllowSorting="true"

然后插入如下的子程序




Sub MyDataGrid_Sort(sender As Object, e As
DataGridSortCommandEventArgs)
SortField = e.SortField
DataGrid1.DataBind
End Sub


OK <asp:DataGrid>下面不需要<property>就可以出现排序的选项。

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本