从用法上看,在前台代码中除了在相应位置写上%# %外,在后台代码中,还需要使用DataBind()方法 。以下是实例:
前台代码:
以下为引用的内容:
html xmlns=""
head
title/title
script type="text/javascript"
function fun() {
var str = '%# DateTime.Now %';
alert(str);
}
/script
/head
body onload="fun()"
form id="form1" runat="server"
div
input type="text" value="https://www.04ip.com/post/%# GetVariableStr %" /br /
"%# GetVariableStr %"
asp:Label ID="Label1" runat="server" Text="%# GetVariableStr %"/asp:Label
%--此种方式可以绑定服务器端控件的属性--%
asp:DropDownList ID="DropDownList1" runat="server" DataSource='%# arraylist %'
%-- 将集合绑定到数据绑定类控件 , 通过DataSource属性来实现,从而在下拉框看到集合中的内容--%
/asp:DropDownList
asp:DataList ID="DataList1" runat="server" DataSource='%# dt %'
%--同上,绑定了DataTable数据集合?--%
ItemTemplate
table border="1" cellpadding="0" cellspacing="0"
tr
td
asp:Label ID="Label2" runat="server" Text='%# Bind("row0")%'/asp:Label
%--由于绑定的数据集合具有多列,并且此数据绑定类控件支持模板,
因此需要在模板中指定需要绑定的列以及格式--%
/td
td
%# Eval("row1")%
/td
/tr
/table
/ItemTemplate
/asp:DataList
/div
/form
/body
/html
可以看出,这种方式在使用时 , 不但可以实现(取代)%=... %所满足的功能,还可以绑定服务器控件属性(如上面的Label1),也可以将集合类型绑定到支持的数据绑定类控件 。在用法上,前台代码除了对数据绑定类控件绑定数据集合外有所差别,其他的使用上与第一种没区别 。在绑定类控件的模板中,如何使用Eval、Bind、DataBinder.Eval等,不在此文讨论中,可以参考下面链接的参考文章 。
后台代码:
以下为引用的内容:
public partial class WebForm2 : System.Web.UI.Page
{
public string GetVariableStr;
public ArrayList arraylist;
public DataTable dt;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GetVariableStr = "hello world from variable";
arraylist = new ArrayList();
arraylist.Add("选?项?1");
arraylist.Add("选?项?2");
dt = new DataTable();
dt.Columns.Add("row0");
dt.Columns.Add("row1");
DataRow dr1 = dt.NewRow();
dr1[0] = "1.1";
dr1[1] = "1.2";
DataRow dr2 = dt.NewRow();
dr2[0] = "2.1";
dr2[1] = "2.2";
dt.Rows.Add(dr1);
dt.Rows.Add(dr2);
Page.DataBind();
//DropDownList1.DataBind();
//DataList1.DataBind();
}
}
}
在后台代码中,与第一种方式唯一不同的 , 就是需要调用DataBind方法 。只有执行了相应控件的DataBind方法,前台代码中这些控件中使用%# %的绑定才会发生(并且控件内部的所有绑定也会发生 , 比如又嵌套了一个绑定后台数据的控件),否则得话将不会被赋值,而是默认空值 。上面我们用的是Page的DataBind方法,那么整个页面所有绑定都会执行 。当然,如果我们只执行DataList1或者DropDownList1的DataBind方法 , 那么只有相应控件的绑定才会发生 。需要注意的是,这里说的需要执行DataBind包括了显示和隐式执行,有些数据绑定类控件,当它们通过 DataSourceID 属性绑定到数据源控件时,会通过隐式调用 DataBind 方法来执行绑定 。这时就不必显示的再次调用了 。
两者区别:
两种绑定方式上,他们的约束基本相同,都要求与属性匹配,出现在他们可以出现的位置 。后者的使用位置更广泛,尤其是支持服务器端控件和绑定数据集合 。后台代码方面,后者需要调用DataBind才能完成绑定 , 前者则没有这方面要求 。这里主要区别一下两者在执行机制上的区别:%=...%是在程序执行时调用(应该是在页面的RenderControl事件过程中完成的,也就是通常情况下我们可以看到的后台代码都执行完毕后再去到前台代码中进行赋值绑定),而%#... %是在DataBind()方法之后被调用,一旦调用了DataBind() , 则它对应的控件将绑定变量,因此,请注意:如果在DataBind()后再修改变量,那么绑定的就不是最新值了,这就需要在完成变量的赋值后,再去DataBind() 。其实这两种方式,它的运行过程可以在VS中通过设置断点来看看 , 看两者的绑定赋值分别是在什么时候发生的 。
推荐阅读
- 用什么可以祛斑视频,用什么能祛斑?
- 为什么国内游戏ios和安卓,为什么国内游戏ios和安卓一样
- 如何开一个大数据营销公司,大数据开店
- u盘视频怎么连接电脑播放,怎么用u盘放视频
- vb.net数组数据类型 vb中数组是什么意思
- 飞鱼星路由器怎么控制网络,飞鱼星路由器怎么连接
- asp.net提交并跳转,aspnet confirm
- 苹果怎么从u盘装双系统,u盘怎么装苹果系统教程
- python定义析构函数 python定义构造方法