Databing()的使用

news/2024/7/24 13:27:08

我们先来看一个简单的例子:

<% @ 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>
<br>
你现在选择的是:<font color=red><%# DDL.SelectedItem.Text %></font>区
<br>
<asp:Button id="sub" Text="提交" Type="submit" runat=server OnClick="sub_Click" />
</form>
</body>
</html>

执行后,我们选择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>

我们见到的情况是:

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


http://www.niftyadmin.cn/n/4235268.html

相关文章

【转】动态树

动态树是一种“超级数据结构”&#xff0c;它能够维护一个由若干有根树组成的森林&#xff0c;在对数的时间复杂度内支持&#xff1a; 1.查询一个点的父亲 2.查询一个点所在的树的根 3.修改某个节点的权 4.向从某个节点到它所在的树的根的路径上的所有的节点的权增加一个数 5.查…

(转)java之用volatile和不用volatile的区别

在当前的Java内存模型下&#xff0c;线程可以把变量保存在本地内存&#xff08;比如机器的寄存器&#xff09;中&#xff0c;而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值&#xff0c;而另外一个线程还继续使用它在寄存器中的变量值的拷贝&…

hyperv虚拟机上虚拟机的cpu个数问题

虚拟机支持的内存容量最多达64G&#xff0c;虚拟机支持的vcpu个数最多为4个&#xff08;如果你虚拟机是WIN2008最多可以4个&#xff0c;如果是win2003最多2个&#xff08;这里其实是表示微软支持的个数&#xff0c;你也可以通过别的技术手段可以支持4个&#xff09;&#xff0c…

(转)为什么volatile不能保证原子性而Atomic可以?

在上篇《非阻塞同步算法与CAS(Compare and Swap)无锁算法》中讲到在Java中long赋值不是原子操作&#xff0c;因为先写32位&#xff0c;再写后32位&#xff0c;分两步操作&#xff0c;而AtomicLong赋值是原子操作&#xff0c;为什么&#xff1f;为什么volatile能替代简单的锁&am…

杂文语录积累(二)

1.不要说什么不想谈&#xff0c;没感觉就是硬道理&#xff1b; 2.没有放不下的事&#xff0c;只有放不下的人&#xff1b; 3.我们不可能在一起一辈子&#xff0c;但我们可以把在一起变的久一点。 4.一直记得一句话&#xff1a;打电话的时候记得微笑&#xff0c;对方听得见。可是…

(转)ConcurrentHashMap分段与锁的学习总结

现阶段的学习策略是理解和实践这些知识点&#xff0c;并没有深入分析其原理&#xff0c;但确实精读了许多关于这个主题基础性的资料让我很受益&#xff08;见参考资料&#xff09;。 哈希表基础 1.哈希表是基于数组的数据结构 2.通过对关键字的哈希运算实现元素的快速定位 3.哈…

[转]JDK Logging深入分析

2019独角兽企业重金招聘Python工程师标准>>> 日志输出是所有系统必备的&#xff0c;很多开发人员可能因为常常使用log4j而忽视了JDK logging模块&#xff0c;两者之间是否有联系&#xff1f;是怎样的联系&#xff1f;JDK logging处理细节是怎么样的&#xff1f;本周…

CAP理论以及Eventually Consistent (最终一致性)解析(转)

1 CAP理论简介10年前&#xff0c;Eric Brewer教授指出了著名的CAP理论&#xff0c;后来Seth Gilbert 和 Nancy lynch两人证明了CAP理论的正确性。CAP&#xff08;Consistency,Availability,partition tolerance)理论告诉我们&#xff0c;一个分布式系统不可能满足一致性&#x…