10.1 常见的数据绑定
假设当前页面的后台存在一个公有int类型的变量,如何将这个变量的值显示到页面中呢?这时可以使用数据绑定技术。ASP.NET中通常使用<%= %>、<%# %>和<%$ %>三种方式实现绑定。
10.1.1 <%= %>方式绑定
<%= %>绑定数据是最简单的一种绑定方式,它的效果等价于Response.Write()实现的效果。
【范例1】
在页面后台声明string类型的userName变量,并指定该变量的值。代码如下。
public string userName = "Administrator";
在页面中直接通过<%= %>绑定userName变量。代码如下。
直接显示:<%=userName %> Label 控 件 : <asp:Label ID="lbl1" runat="server" Text="Label"><%=userName %></asp:Label>
10.1.2 <%# %>方式绑定
<%# %>是一种最常用的绑定方式,它是控件数据绑定的基础,所有的数据表达式都必须包含在这些字符串中,并且必须调用控件的DataBind()方法才能正常执行。无论是Web服务器控件还是HTML服务器控件,都可以通过<%# %>实现绑定。
1.绑定表达式语法
使用<%# %>绑定数据时,数据绑定表达式必须包含在<%#和%>之间。格式如下。
<tagprefix : tagname property='<%# data-binding expression %>' runat="server" />
或者:
<%# data-binding expression %>
ASP.NET支持分层数据绑定模型,数据绑定表达式使用Eval()和Bind()方法将数据绑定到控件,并将更改提交回数据库。
(1)Eval()是静态单向(只读)方法,因此Eval()方法用于单向(只读)绑定。该方法采用数据字段的值作为参数并将其作为字符串返回。
(2)Bind()方法支持读取和写入功能,因此Bind()方法用于双向(可更新)绑定。该方法可以检索数据绑定控件的值并将任何更改提交回数据库。
2.数据绑定表达式的出现位置
<%# %>绑定表达式时,可以将数据表达式包含在服务器控件或者普通的HTML元素的开始标记中。格式如下。
<asp:TextBox ID="TextBox1" runat="server" Text='<%#数据绑定表达式%>' > </asp:TextBox>
上述绑定表达式可以是一个变量,也可以是一个带返回值的C#或者VB.NET方法,还可以是某个控件的某个属性的值,也可以是C#或者VB.NET对象的某个字段或者属性的值等。当然,也可以直接是一个字符串,例如“许飞”。
数据绑定表达式还可以包含在页面中的任何位置。这时,数据绑定表达式的取值可以参考上面。格式如下。
<form id="form1" runat="server"> <div> <%#Eval("数据绑定表达式1")%> <%#Eval("数据绑定表达式2")%> </div> </form>
注意
如果数据绑定表达式是Eval("数据库中某个表的某个字段")或者Bind("数据库中某个表的某个字段")等,那么必须把TextBox控件放在某个循环显示的控件(如Repeater控件)的模型中,否则会提示Eval()和Bind()等绑定方法只能在数据绑定控件的上下文中使用。
可以将数据绑定表达式包含在JavaScript脚本代码中,从而实现在JavaScript中调用C#或者VB.NET的方法。
【范例2】
单击页面中的按钮调用JavaScript中的函数,在函数中调用后台的方法。步骤如下。
(1)创建窗体页面,在页面中添加Button控件,并指定Click事件。代码如下。
<input id="Button1" type="button" value="Javascript调用c#的方法!" onclick="GetStr()" />
(2)在JavaScript脚本中创建GetStr()函数,在函数中调用SayHello()方法并将结果保存到a变量中,然后弹出对话框提示。代码如下。
function GetStr() { var a = '<%# SayHello("小张") %>'; //调用c#的方法 alert(a); }
(3)在页面后台添加代码,相关内容如下。
public string SayHello(string name) { return name + "对夏天说:我喜欢你。"; } protected void Page_Load(object sender, EventArgs e) { Page.DataBind(); }
(4)运行页面查看效果,单击按钮进行测试,效果图不再显示。
3.数据绑定表达式的类型
数据绑定表达式的类型有多种,它可以是一个变量,可以是服务器控件的属性值,可以是一个数组等集合对象,可以是一个表达式,可以是一个方法,还可以是使用Eval()和Bind()等方法取得的数据表的字段。
【范例3】
在页面中添加ListBox控件,将控件的DataSource属性值指定为一个数组集合。代码如下。
<asp:ListBox ID="List1" DataSource="<%#array %>" runat="server"> </asp:ListBox>
在页面后台创建ArrayList集合对象,调用Add()方法添加数据。代码如下。
public ArrayList array = new ArrayList(); protected void Page_Load(object sender, EventArgs e) { array.Add("李阳"); array.Add("李濂"); array.Add("许风"); array.Add("乐乐"); array.Add("陈阳"); array.Add("多多"); Page.DataBind(); }
注意
如果数据绑定表达式作为属性的值,只要数据绑定表达式中没有出现双引事情,那么<%#数据绑定表达式%>的最外层用双引号或者单引号都可以。如果数据绑定表达式中出现双引号,则<%#数据绑定表达式%>的最外层最好用单引号。
10.1.3 <%$ %>方式绑定
<%$ %>用于对Web.config文件的键/值进行绑定,通常用于连接数据库的字符串。使用<%$ %>绑定数据时需要注意以下两点。
(1)只能用于绑定Web服务器控件。
(2)只能绑定到服务器控件的某个属性上。
【范例4】
通过DropDownList控件的DataSourceID属性指定数据源绑定控件,在数据源绑定控件中绑定数据库中的数据。SqlDataSource控件的代码如下。
<asp:SqlDataSource ID="SqlDataSource1" runat="server" SelectCommand="SELECT [typeId], [typeName] FROM [employType]" ConnectionString="<%$ConnectionStrings:homeworkConnectionString %>">
共有条评论 网友评论