文章目录
一、数据绑定概述
数据绑定是指从数据源获取数据或向数据源写入数据。它的目的是方便对数据进行后期处理,所以无论是向用户显示数据或者向数据源写入数据以及其他格式的数据处理,都会将这些数据存放到一个合适的数据容器中,以便于进行后期的数据处理。简单的数据绑定可以是对变量或属性的绑定,比较复杂的是对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">姓 名:</td>
<td width="200px"><%#Name %></td></tr>
<tr><td align="center">年 龄:</td>
<td><%#Age %></td>
</tr>
<tr><td align="center">性 别:</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.cs
的Page_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.js
和jquery-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.cs
的Page_Load
方法中调用Page.DataBind()方法执行数据绑定表达式
就好啦~
大功告成!下面是结果图:
四、集合绑定数据
1、集合绑定概述
有一些控件可以绑定多条数据记录,比如DropDownList
控件,因为这些控件只有展示更多数据时才有意义,所以在向这类控件绑定数据时绑定的数据源一定是数据集合类。通常情况下,集合数据源主要包含ArrayList
、List
、Hashtabel
、DataView
、DataReader
等等泛型或者非泛型集合。
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>
大功告成!效果如下: