当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

10.1常见的数据绑定

8/31/2020 9:19:23 PM 人评论

10.1常见的数据绑定

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 %>">

上一篇:9.10其他常用对象

下一篇:10.2数据控件

相关教程

共有条评论 网友评论

验证码: 看不清楚?