DataBind数据核心

原创 2004年10月30日 16:23:00
作者:飞刀 

这一节主要是要讲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)
{
//首先建立一个数组
ArrayList arr=new ArrayList();
arr.Add("飞刀");
arr.Add("Zsir");
arr.Add("大风");
arr.Add("布丁");
arr.Add("亚豪");

//将数组捆绑到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>


你现在选择的是:<font color=red><%# DDL.SelectedItem.Text %></font>区


<asp:Button id="sub" Text="提交" Type="submit" runat=server OnClick="sub_Click" />
</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;
//建立表数据
DataTable dt=new DataTable();
DataRow dr;
//建立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);
}
//捆绑
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,这是一个常犯的错误:)
版权声明:本文为博主原创文章,未经博主允许不得转载。

ASP.NET:数据库绑定控件DataBind方法

  DataBind方法是ASP.NET中一个很重要的概念,几乎所有的控件都需要它控制数据的操作,它的作用是在为控件指定数据源后,执行数据绑定操作。在上一章的DataSet对象实例中我们已经使用过,利...
  • mydriverc
  • mydriverc
  • 2007年06月08日 16:01
  • 2191

JavaScript数据绑定databind框架knockout

Knockout是一个轻量级的UI类库,使用的是MVVM(model-view-)模式,能够让JavaScript前端简单化,用于页面的数据绑定。使用它可以减少web前端js的代码量,而且knocko...
  • Jeffery_Gong
  • Jeffery_Gong
  • 2016年03月28日 10:30
  • 2068

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

这一节主要是要讲DataBind,这个在ASP.net中是很重要的东东,几乎所有的控件都需要它来控制数据的操作。也可以说是ASP.net的数据核心。 我们先来看一个简单的例子:public void ...
  • ysv1118
  • ysv1118
  • 2009年03月17日 11:48
  • 155

Eval和DataBind方法绑定页面数据

Eval是数据的单向绑定,而DataBind()是双向绑定。在DataGridView和Reapter直接绑定了数据源后,DataBind可以隐士的调用...
  • liuyuehui110
  • liuyuehui110
  • 2011年01月11日 19:26
  • 3190

Android-DataBind使用

> Android https://developer.android.com/tools/data-binding/guide.html 文档 http://blog.zhaiyifan.cn/2...
  • qq_22329521
  • qq_22329521
  • 2016年07月19日 23:57
  • 1652

DataBind

在前面的"模板中的数据绑定"部分中我们论述过,ASP.NET包含了一种宣告式的数...
  • amanda1982
  • amanda1982
  • 2007年06月20日 12:53
  • 1703

asp.net 页面初级介绍2DataBind()技术

DataBind()技术
  • pangwenquan5
  • pangwenquan5
  • 2014年07月23日 23:02
  • 359

[我的ASP.net学习历程]DataList(DataBind)(1)

void Page_Load(Object Sender,EventArgs e){ ArrayList array=new ArrayList(); array.Add("1234"); array...
  • bgu
  • bgu
  • 2004年09月21日 19:50
  • 850

java.lang.NoClassDefFoundError:com/fasterxml/jackson/databind/ObjectMapper

此信息为spring和jackson相关版本不兼容 我使用的是Spring4.3.2版本,把本地jsckson版本升到2.7.5以上或者更高即可 Spring为4.3.2兼容jackson版本为2....
  • u014078154
  • u014078154
  • 2017年08月22日 12:30
  • 2705

build spark standalone NoClassDefFoundError com/fasterxml/jackson/databind/Module

build spark standalone com/fasterxml/jackson/databind/Module NoClassDefFoundError error
  • youchuikai
  • youchuikai
  • 2016年12月19日 15:42
  • 1634
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DataBind数据核心
举报原因:
原因补充:

(最多只允许输入30个字)