亲密接触ASP.Net(5) DataBind数据核心

这一节主要是要讲DataBind,这个在ASP.net中是很重要的东东,几乎所有的控件都需要它来控制数据的操作。也可以说是ASP.net的数据核心。 我们先来看一个简单的例子:

<% @ Page Language="C#" %>
<% @ Import Namespace="System.Data" %>
<Script Language="C#" Runat="Server">
public void Page_Load(Object src,EventArgs e)
{
file://首先建立一个数组
ArrayList arr=new ArrayList();
arr.Add("飞刀");
arr.Add("Zsir");
arr.Add("大风");
arr.Add("布丁");
arr.Add("亚豪");

file://将数组捆绑到DropDownList控件上去
DDL.DataSource = arr;
DDL.DataBind();
}
</script>
<html>
<head>
<title></title>
</head>
<body>
<asp:DropDownList id="DDL" runat="server" />
</body>
</html>

最后的显示为:

 飞刀 Zsir 大风 布丁 亚豪

我们在代码中可以看到我们建立了一个DropDownList,但是他没有<asp:ListItem>属性,而我们从最后的显示中依然可以看到我们所列出的选项。

这里就是我们用DataBind的结果,在Page_Load方法中我们建立了一个数组(ArrayList),并通过DataBind方法将这个数组捆绑到了DropDownList控件中,使得DropDownList最后有数据显示:),怎么样对Bind有一定感性认识了吧。下面我们开始正式讲解

其实DataBind(),不仅能对控件进行捆绑,而且还能够对页面中属性,方法进行捆绑,甚至整个页面都可以捆绑。比如,调用Page.DataBind()方法或者直接使用DataBind(),那么整个页面都将被捆绑,所有的数据全在监视之下。下面的例子,我们将使用DataBind方法来捆绑DropDownList,并获得其中的数据

<% @ Page Language="C#" %>
<% @ Import Namespace="System.Data" %>
<Script Language="C#" Runat="Server">
public void sub_Click(Object sender,EventArgs e)
{
Page.DataBind();
}
</script>
<html>
<head>
<title></title>
</head>
<body>
<form runat=server>
<asp:DropDownList id="DDL" runat="server" >
<asp:ListItem>ASP技术</asp:ListItem>
<asp:ListItem selected>ASP.Net技术</asp:ListItem>
<asp:ListItem>JSP技术</asp:ListItem>
<asp:ListItem>PHP技术</asp:ListItem>
<asp:ListItem>组件技术</asp:ListItem>
</asp:DropDownList>
<br>
你现在选择的是:<font color=red><%# DDL.SelectedItem.Text %></font>区
<br>
<asp:Button id="sub" Text="提交" Type="submit" runat=server />
</form>
</body>
</html>

执行后,我们选择JSP技术我们点击"提交"按钮,看到情况是:

ASP技术ASP.Net技术selected>JSP技术 PHP技术组件技术

你现在选择的是:JSP技术区

我们看到,那个红色的[JSP技术],我们并没有使用什么控件,但是他却能正确的显示我们的选择结果,这个是就捆绑的结果,注意<%# DDL.SelectedItem.Text %>这句话,正是它让我们取得了捆绑的数据。它看上去是不是像我们熟悉的<%=...%>这个语句,它们的使用方法相差不多,只是<%=...%>是在程序执行时调用,<%#... %>是在DataBind()方法之后被调用。以后我们还能经常看到他的身影,呵呵。 接收Bind的控件,一般有DropDownList,DataList,DataGrid,ListBox这些集合性质的控件,而被捆绑的主要是ArrayList(数组),Hashtable(哈稀表),DataView(数据视图),DataReader这四个,以后我们就可以对号入座,不会出现DataTable被捆绑的错误了:)

讲到Bind,就不能说一下DataBinder.Eval()方法.

我们在使用DataBind,获得的数据,系统会将其默认为String(字符串),这对我们平时的输出显示提供了极大的方便,但是我们并不是每次都需要string类型,有时我们就需要Boolean,Int32这些类型。此时我们就需要转化类型了。可能大家最先想到的是String.Format方法,这是最好的,但是用法过于烦。所以最好不要这样啦。我们可以用DataBinder.Eval()方法,他的格式是:

DataBinder.Eval(Container.DataItem,"转换的类型","格式")

最后一个"格式"是可选的,一般不用去管他,Container.DataItem是捆绑的数据项,"转换类型"指的是Integer,String,Boolean这一类东西.

有了它,我们处理数据就更加方便

最后我们来看一个例子,关于DataView的捆绑,呵呵,老是用DropDownList烦了,这次用DataGrid,在这个例子中我们可以看到"表是怎样炼成的"

<% @ Page Language="C#" %>
<% @ Import Namespace="System.Data" %>
<Script Language="C#" Runat="Server">
public void Page_Load(Object src,EventArgs e)
{
int i;
file://建立表数据
DataTable dt=new DataTable();
DataRow dr;
file://建立Column例,可以指明例的类型,这里用的是默认的string
dt.Columns.Add(new DataColumn("编号"));
dt.Columns.Add(new DataColumn("用户名"));
for(i=1;i<8;i++)
{
dr=dt.NewRow();
dr[0]=Int32.ToString(i);
dr[1]="aspcn"+Int32.ToString(i);
dt.Rows.Add(dr);
}
file://捆
DG1.DataSource = new DataView(dt);
DG1.DataBind();
}
</script>
<html>
<head>
<title></title>
</head>
<body>
<asp:DataGrid id="DG1" runat=server align=center HeaderStyle-BackColor="#aaaadd" />

</body>
</html>

我们见到的情况是:

编号 用户名
 1 aspcn1
 2 aspcn2
 3 aspcn3
 4 aspcn4
 5 aspcn5
 6 aspcn6
 7 aspcn7

关于这个程序我就不多说了,程序中有说明,只是要注意我们这里bind的是DataView,不是DataTable,这是一个常犯的错误:)

到这里我们的基础讲完了,大家要多多去熟悉一下Web控件,不然以后不知所云的:)

后面,我们将花几个节来谈一下,数据库的调用.

时间: 2025-01-20 17:09:01

亲密接触ASP.Net(5) DataBind数据核心的相关文章

亲密接触ASP.Net——目录

ASP+出来都快半年了,我们站点也做了不少的介绍,但是今天飞刀我才终于有了心思来写一下关于这个ASP+的文章了.呵呵,让大家久等了. 首先我得申明,本教程适用于有一定网络编程经验的人,比如asp,php,cgi,jsp开发者,如果你对网络编程一点也不了解,那么您还是先去学学其它的语言,不然以下的文章您会有很多看不懂的地方.呵呵. (1) ASP+的配制环境 (2) ASP+的语法 (3) asp+中的控件 (4) WEB控件 (5) DataBind数据核心 (6) Namespace(命名空间

亲密接触ASP.Net(16) Cookie

Cookie Cookie的用法也和ASP中差不多.比如我们建立一个名为aspcn,值为飞刀的cookie HttpCookie cookie = new HttpCookie["aspcn"];cookie.Value = "飞刀";Response.AppendCookie(cookie); 我们取出Cookie值也很简单 HttpCookie cookie = Request.Cookies["aspcn"];cookieValue = c

亲密接触ASP.Net(9) 在一个DataSet中储存多个数据表

在一个DataSet中储存多个数据表 我们在ASP中很多人习惯于使用RecordSet对象来操作数据库,但是RecordSet有一个的缺点就是一个RecordSet只能储存一个数据表,当我们需要操作多个表时,不得不在多个RecordSet中来回操作,虽然这些在使用习惯后也没有什么,但是对一个新手来说,这也是一个很麻烦人的事情.光是那些变量名就可以搞浑你,现在好了,在ASP.Net中,只需要一个DataSet就可以搞定一切.大大的方便了我们的程序.我们还是老样子,先看一段程序,再来细细讲解. <%

亲密接触ASP.Net(10) 增加修改删除数据

接上一节,我们这一节主要计论如何使用DataSet,在数据库中增加.修改.删除一个数据. 首先我们需要打开一个联结,我们的数据库还是用上一节的吧:) string MyConnString = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=c:/test/test.mdb;";string strComm = "select * from UserList";ADOConnection MyConnection = n

亲密接触ASP.Net(13) 实现个性化分页

个性化的分页实现 我们前面讲的分页,只不过是通过修改DataGrid的属性来实现分页,这样有这样的好处,最大的就是简单,呵呵,根本不用操心,分页是如何产生的. 但是它同样有缺点,不能按照我们想像的产生各种我们需要的样式. 没有办法,想个性化功能,只有自已动手来做了,呵呵. 我们一步步的来,首先是导入需要的命名空间.下面的例子,其实也是我从国外找来的,再加上点个人的东东,再汉化,呵呵.今天心情很好,我连标签色彩都给大家显示出来了.呵呵,更利于大家看程序. <%@ Page Language="

亲密接触ASP.Net(13)

asp.net 个性化的分页实现 我们前面讲的分页,只不过是通过修改DataGrid的属性来实现分页,这样有这样的好处,最大的就是简单,呵呵,根本不用操心,分页是如何产生的. 但是它同样有缺点,不能按照我们想像的产生各种我们需要的样式. 没有办法,想个性化功能,只有自已动手来做了,呵呵. 我们一步步的来,首先是导入需要的命名空间.下面的例子,其实也是我从国外找来的,再加上点个人的东东,再汉化,呵呵.今天心情很好,我连标签色彩都给大家显示出来了.呵呵,更利于大家看程序. <%@ Page Lang

亲密接触ASP.Net

asp.net     ASP+出来都快半年了,我们站点也做了不少的介绍,但是今天飞刀我才终于有了心思来写一下关于这个ASP+的文章了.呵呵,让大家久等了.      首先我得申明,本教程适用于有一定网络编程经验的人,比如asp,PHP,CGI,JSP开发者,如果你对网络编程一点也不了解,那么您还是先去学学其它的语言,不然以下的文章您会有很多看不懂的地方.呵呵.      我们开始吧.      ASP+的运行环境      我们要学习ASP+,就先得搞一个调试环境出来.让你的"爱鸡"

亲密接触ASP.Net(2) ASP+的语法

上一节 ,我们简单介绍了ASP+的配制环境,我们这一节来谈谈ASP+的语法.其实当你装好NGWS后,他所带的文档是最好的学习ASP+的教程,要你E文足够好,以及很好的耐性,学习ASP+不是难事啦.我们这些家伙也是从这里学了很多的,这篇关于ASP+语法的文章,大多数也来自于M$的原文,最可惜的就是我们的服务器不能装上NGWS,有些例子,大家不能看到执行结果,不太好.不过有些地方,我会把执行结果显示出来的.我们开始这一节吧:) 一个ASP+页面的后缀名是".ASPX".它能够包含八种不同的

亲密接触ASP.Net(7) 数据库的应用

上一节,我们简单的讲了一下数据库的应用,而我们没有具体说明执行语句如何用于显示.呵呵,是留在这一章节中讲的.这里我们必须得了解一下DataReader,DataSet和DataGrid控件,DataGrid是显示控件,大家自已去看它相关的应用,我们在这里不哆嗦,DataReader和DataSet都可以用来储存数据内容,不过DataReader只能储存查询的结果,DataSet就相对来说复杂多了,他的功能很强大,我们一步步来讲,这一节还讲不完,我们这一节只讲其关于储存数据库的功能,呵呵,为了和D