ASP.NET 核心技术 | 数据绑定


一、数据绑定概述

数据绑定是指从数据源获取数据或向数据源写入数据。它的目的是方便对数据进行后期处理,所以无论是向用户显示数据或者向数据源写入数据以及其他格式的数据处理,都会将这些数据存放到一个合适的数据容器中,以便于进行后期的数据处理。简单的数据绑定可以是对变量或属性的绑定,比较复杂的是对ASP.NET数据绑定控件的操作。

目录即为数据绑定的知识框架~

说明:所有的数据绑定表达式都必须包含在<%#…%>中。另外,执行绑定操作要么执行Page对象的DataBind方法,要么执行数据绑定控件对应类的实例对象的DataBind方法。


二、简单属性绑定

1、简单属性绑定概述

属性的数据绑定必须包含get访问器(因为属性的值是通过get返回的),数据显示控件需要通过属性的get访问器从属性中读取数据。

语法如下:

<%# 属性名称%>

这种绑定方式需要调用Page类的DataBind方法才能执行绑定操作

注意:DataBind方法通常在Page_Load事件中调用。

2、绑定属性的实现方式

通过展示一个简单的网页数据来学习简单属性绑定。

先创建一个网站并且创建一个起始页面,在该页面的.aspx.cs中定义以下属性:

        public string Name
        {
            get { return "wzq"; }
        }
        public string Age
        {
            get { return "20"; }
        }
        public string Sex
        {
            get { return "男"; }
        }
        public string IDType
        {
            get { return "身份证"; }
        }
        public string IDNo
        {
            get { return "123456789"; }
        }

然后再该页面的.aspx页面写一顿HTML代码并将数据绑定到这里:

            <table align="center">
                <tr><th colspan="2">简单属性绑定</th></tr>
                <tr><td width="150px" align="center">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;名:</td>
                <td width="200px"><%#Name %></td></tr>
                <tr><td align="center">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;龄:</td>
                    <td><%#Age %></td>
                </tr>
                <tr><td align="center">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;别:</td>
                    <td><%#Sex %></td>
                </tr>
                <tr><td align="center">证件类型:</td>
                    <td><%#IDType %></td>
                </tr>
                <tr><td align="center">身份证号:</td>
                    <td><%#IDNo %></td>
                </tr>
            </table>

最后一步,就是在该页面的.aspx.csPage_Load方法中调用Page类DataBind方法来实现在页面加载时读取数据,代码如下:

        protected void Page_Load(object sender, EventArgs e)
        {
            Page.DataBind();        //执行绑定数据
        }

大功告成!下面是效果:
在这里插入图片描述


三、表达式绑定

1、表达式绑定概述

使用表达式绑定数据可以实现自定义格式化数据,例如将两个算数进行加、减、乘、除运算,然后将结果展示在页面上,语法与上述的简单数据绑定相同。同样也需要调用Page类DataBind方法。

2、表达式绑定的实现方法

模拟一个超市的打价器,通过设置产品的单价并输入产品的重量得到产品的价格,最后再将价格以四舍五入的方式绑定到Label控件上。

新建一个网站,创建并设置一个起始页Default.aspx,在这个起始页上添加两个TextBox控件,一个Button控件,一个Label控件和两个CompareValidator验证控件,打开Default.aspx源视图写入以下代码:

        <div>
            <table align="center">
                <tr><th colspan="2">表达式绑定</th></tr>
                <tr><td width="100" align="center">单价:</td>
                    <td>
                        <asp:TextBox ID="TextBox1" runat="server" Text="0"></asp:TextBox></td>
                </tr>
                <tr align="center"><td>重量:</td>
                    <td>
                        <asp:TextBox ID="TextBox2" runat="server" Text="0"></asp:TextBox></td>
                </tr>
                <tr><td align="center">
                    <asp:Button ID="Button1" runat="server" Text="计算总价" />
                    </td>
                    <td>
                        <asp:Label ID="Label1" runat="server" Text='<%#"总金额为:"
                            +Math.Round(Convert.ToDecimal(TextBox1.Text)
                            *Convert.ToInt32(TextBox2.Text),2)%>'></asp:Label></td>
                </tr>
            </table>
            <asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="输入数字" 
                Operator="DataTypeCheck" Type="Double" ControlToValidate="TextBox1"></asp:CompareValidator>
            <asp:CompareValidator ID="CompareValidator2" runat="server" ErrorMessage="输入数字"
                Operator="DataTypeCheck" Type="Integer" ControlToValidate="TextBox2"></asp:CompareValidator>
        </div>

在这个代码中额外添加的两个CompareValidator控件是为检测两个TextBox控件的合法性的

由于使用了验证控件所以需要添加jQuery库,新建一个文件夹scripts,然后分别创建两个JavaScript文件分别命名为:jquery-1.10.2.jsjquery-1.10.2.min.js,接着前往下面的这两个链接:

jquery-1.10.2.js : http://code.jquery.com/jquery-1.10.2.js
jquery-1.10.2.min.js : http://code.jquery.com/jquery-1.10.2.min.js

将链接到的代码分别复制给上面的两个文件夹。紧接着打开Global.asax.cs,添加对以上的JavaScript插件的引用:(这里需要加上using System.Web.UI

        protected void Application_Start(object sender, EventArgs e)
        {
            //对“jquery-1.10.2.js”的引用     在应用程序启动时运行的代码
            ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition
            {
                Path="~/scripts/jquery-1.10.2.min.js",
                DebugPath="~/scripts/jquery-1.10.2.js"
            });
        }

最后一步就是在Default.aspx.csPage_Load方法中调用Page.DataBind()方法执行数据绑定表达式就好啦~

大功告成!下面是结果图:
在这里插入图片描述


四、集合绑定数据

1、集合绑定概述

有一些控件可以绑定多条数据记录,比如DropDownList控件,因为这些控件只有展示更多数据时才有意义,所以在向这类控件绑定数据时绑定的数据源一定是数据集合类。通常情况下,集合数据源主要包含ArrayListListHashtabelDataViewDataReader等等泛型或者非泛型集合。

2、集合绑定数据的实现方式

ArraryList绑定到DropDownList中,新建一个网站,并新建一个Default.aspx作为起始页,然后再Default.aspx页面中添加一个DropDownList控件:

       <div>
            <asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
        </div>

然后,在Default.aspx.cs中怼个ArraryList数据源,然后将数据绑定到DropDownList中,需要注意的时使用集合需要先引用命名空间using System.Collections

        protected void Page_Load(object sender, EventArgs e)
        {
            ArrayList arr = new ArrayList();
            arr.Add("<--请选择-->");
            arr.Add("数学");
            arr.Add("语文");
            arr.Add("英语");
            arr.Add("体育");
            DropDownList1.DataSource = arr;     //实现绑定数据
            DropDownList1.DataBind();       //调用绑定
        }

大功告成!效果如下:
在这里插入图片描述


五、方法调用结果绑定

1、方法调用结果绑定概述

在实际项目开发中,会有很多较为复杂的运算逻辑,放在显示控件中直接去绑定当让时可以的,但是它降低了源代码的可读性并增加了后期维护时的难度。如果把这些逻辑放到一个方法中,然后在控件中直接调用这个方法,就可以解决这个问题了~~

2、方法调用结果绑定的实现方式

使用一个方法产生一个随机数,并且把这个随机数绑定在Label控件中。

新建一个网站并且创建一个起始页Default.aspx,然后在Default.aspx.cs中写入产生随机数的方法:

        public string operation(string VarOperator)
        {
            int num1 = Convert.ToInt32(txtNum1.Text);
            int num2 = Convert.ToInt32(txtNum2.Text);
            if (VarOperator == "1")
                num2++;
            else
                num1++;
            Random ram = new Random();
            int res = ram.Next(num1, num2);
            return res.ToString();
        }

然后,在Default.aspx中肆意的添加控件,并加入两个CompareValidator控件用来验证输入合法性,同上面的步骤、在这里需要引用jquery库。

        <div>
            <table align="center">
                <tr><th colspan="2">绑定方法调用的结果</th></tr>
                <tr><td width="200" align="center">随机数下限:</td>
                    <td>
                        <asp:TextBox ID="txtNum1" runat="server" Text="0"></asp:TextBox></td></tr>
                <tr><td align="center">随机数上线:</td>
                    <td>
                        <asp:TextBox ID="txtNum2" runat="server" Text="0"></asp:TextBox></td>
                </tr>
                <tr><td align="center">是否包含设定的上下限:</td>
                    <td>
                        <asp:RadioButtonList ID="RadioButtonList1" runat="server" RepeatDirection="Horizontal">
                            <asp:ListItem Text="包含" Value="1" Selected="True"></asp:ListItem>
                            <asp:ListItem Text="不包含" Value="0" Selected="False"></asp:ListItem>
                        </asp:RadioButtonList></td>
                </tr>
                <tr>
                    <td align="center">
                        <asp:Button ID="Button1" runat="server" Text="生成随机数" /></td>
                    <td>
                        <asp:Label ID="Label1" runat="server" Text='<%# "运行结果:"+ operation(RadioButtonList1.SelectedValue)%>'></asp:Label></td>
                </tr>
            </table>
            <asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="输入数字"
                Operator="DataTypeCheck" Type="Double"
                ControlToValidate="txtNum1"></asp:CompareValidator>
            <asp:CompareValidator ID="CompareValidator2" runat="server" ErrorMessage="输入数字"
                Operator="DataTypeCheck" Type="Double"
                ControlToValidate="txtNum2"></asp:CompareValidator>
        </div>

大功告成!效果如下:
在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值