ASP.NET 数据绑定详解 代码+步骤
文章目录
- 1. 数据绑定概述
- 2. 简单数据绑定
- 2.1. 属性绑定
- 2.2. 表达式绑定
- 2.3. 集合绑定
- 2.4. 方法绑定
- 3. 数据控件绑定
- 3.1. ListControl 控件
- 3.2. GridView 控件
- 3.2.2. 使用GridView控件绑定数据源
- 3.2.3. 自定义GridView控件的列字段名
- 3.2.4. 使用GridView控件分页显示数据
- 3.2.5. 选中、编辑和删除GridView数据项
- 3.3. DataList 控件
- 3.3.1. DataList 模板
- 3.3.2. 分页显示DataList控件中的数据
- 3.4. ListView控件
- 3.4.1. ListView控件概述
- 3.4.2. ListView控件的模板
- 3.4.3. 使用ListView控件对数据进行显示、分页和排序
1. 数据绑定概述
数据绑定指的是从数据源获取数据,或者向数据源写入数据。主要有两种形式:简单数据绑定和数据控件绑定。
其中简单数据绑定分为属性绑定、表达式绑定、集合绑定和方法绑定;数据控件绑定分为ListControl 控件、GridView 控件、DataList 控件和ListView控件
2. 简单数据绑定
2.1. 属性绑定
基于属性的数据绑定所涉及的属性必须要包含Get访问器,它的基本语法为:
<%# 属性名称 %>
如果在ASP页面中对属性进行了绑定,那么需要调用Page类的DataBind方法才能执行绑定操作,例如下例:
// .aspx文件
<body><form id="form1" runat="server"><div><!-- 数据绑定 --><asp:Label ID="Label1" runat="server" Text="图书名称:"><%# BookName %></asp:Label></div><div><!-- 数据绑定 --><asp:Label ID="Label2" runat="server" Text="图书价格:"><%# BookPrice %></asp:Label></div></form>
</body>// .aspx.cs文件
// BookName属性
public string BookName {get {return "ASP.NET程序设计";}
}// BookPrice属性
public string BookPrice {get {return "49";}
}protected void Page_Load(object sender, EventArgs e){// 调用DataBind()方法执行绑定Page.DataBind();
}
执行结果如下:
2.2. 表达式绑定
表达式绑定的语法与属性绑定一致,它可以在属性绑定的基础上通过表达式对数据进行处理,它的语法如下:
<%# 表达式 %>
例如在属性绑定的基础上,要查询10本书的总价格,则代码如下:
// .aspx文件
<body><form id="form1" runat="server"><div><!-- 数据绑定 --><asp:Label ID="Label1" runat="server" Text="图书名称:"><%# BookName %></asp:Label></div><div><!-- 表达式绑定 --><asp:Label ID="Label2" runat="server" Text="图书价格:"><%# Convert.ToInt32(BookPrice)*10 %></asp:Label></div></form>
</body>// .aspx.cs文件
// BookName属性
public string BookName {get {return "ASP.NET程序设计";}
}// BookPrice属性
public string BookPrice {get {return "49";}
}protected void Page_Load(object sender, EventArgs e){// 调用DataBind()方法执行绑定Page.DataBind();
}
执行结果如下所示
2.3. 集合绑定
有一些服务器控件是多记录控件,如DropDownList控件, 这类控件即可使用集合作为数据源对其进行绑定。通常情况下,集合数据源主要包括ArrayList、Hashtabel、 DataView、 DataReader 等。
例如下面代码,实现了对DropDownList控件进行数据绑定:
// .aspx文件
<body><form id="form1" runat="server"><div><asp:Label ID="Label1" runat="server" Text="图书名称:"></asp:Label><asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList></div></form>
</body>protected void Page_Load(object sender, EventArgs e){// 构建数据源ArrayList arrayList = new ArrayList();arrayList.Add("iisexpress");arrayList.Add("assembly");arrayList.Add("Windows");// 指定数据源DropDownList1.DataSource = arrayList;// 数据绑定DropDownList1.DataBind();
}
执行结果如下:
2.4. 方法绑定
方法的绑定与属性绑定的语法是一致的,只不过把绑定对象更替为了方法,例如下面的代码:
// .aspx文件
<body><form id="form1" runat="server"><div><!-- 数据绑定 --><asp:Label ID="Label1" runat="server" Text="图书名称:"><%# BookName %></asp:Label></div><div><!-- 方法绑定 --><asp:Label ID="Label2" runat="server" Text="图书价格:"><%# PriceTest("49") %></asp:Label></div></form>
</body>// .aspx.cs文件
public string PriceTest(string _price) {return _price;
}protected void Page_Load(object sender, EventArgs e){// 调用DataBind()方法执行绑定Page.DataBind();
}
执行结果如下:
3. 数据控件绑定
3.1. ListControl 控件
ListControl控件用来定义所有列表类型控件的所有属性方法和事件,是一个抽象基类,它能够控制的控件主要包括:DropDownList控件、ListBox控件、CheckBoxList控件、RadioButtonList控件。
ListControl控件能够指定能够用来填充列表控件的数据源,其中与数据绑定修改的属性有:
- DataSource属性,用来设置数据源
- DataTextField属性,用来指定提供文本内容的数据源字段
- DataValueField属性,用来指定提供值的数据源字段
例如下面代码,将图书列表以DropDownList控件进行显示,当用户选择了DropDownList控件中的某个值后,页面会进行相应的信息更新。
// .aspx文件
<body><form id="form1" runat="server"><div><!-- ListControl控件绑定DropDownList --><asp:Label ID="Label1" runat="server" Text="图书列表:"><%# BookName %></asp:Label><asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"></asp:DropDownList></div><div><asp:Label ID="Label2" runat="server" Text="图书编码:"></asp:Label><asp:Label ID="Label3" runat="server" Text=""></asp:Label></div><div><asp:Label ID="Label4" runat="server" Text="图书名称:"></asp:Label><asp:Label ID="Label5" runat="server" Text=""></asp:Label></div></form>
</body>// .aspx.cs文件
protected void Page_Load(object sender, EventArgs e){if (!IsPostBack) {SqlConnection sqlConnection = new SqlConnection("Server=DEITIVOD;Database=db_LibraryMS;User Id=sa;pwd=admin");SqlDataAdapter sqlDataAdapter = new SqlDataAdapter("select book_code, book_name from tb_bookinfo;", sqlConnection);// 将查询到的数据放入一个DataSetDataSet dataSet = new DataSet();sqlDataAdapter.Fill(dataSet);// 对DropDownList执行指定数据源和数据绑定DropDownList1.DataSource = dataSet;DropDownList1.DataTextField = "book_name"; // 指定要显示的字段DropDownList1.DataValueField = "book_code"; // 指定要绑定的主键值DropDownList1.DataBind();}
}protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e){Label3.Text = DropDownList1.SelectedValue;Label5.Text = DropDownList1.SelectedItem.Text;
}
执行效果如下:
数据库中的tb_bookinfo数据表的数据如下所示:
ASP页面中显示的数据:
3.2. GridView 控件
GridView控件可称之为数据表格控件,它以表格的形式显示数据源中的数据,每列表示一个字段,而每行表示一条 记录,可以将其理解为数据库技术中的视图。
3.2.2. 使用GridView控件绑定数据源
使用GridView控件绑定数据源主要用到
- DataSource属性,用来指定数据源
- DataBind方法,用来执行数据绑定
如下代码实现了将SQL Server数据库中的数据通过GridView控件显示到ASP页面中
// .aspx文件
<body><form id="form1" runat="server"><div><!-- GridView控件绑定数据源 --><asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None"><AlternatingRowStyle BackColor="White" ForeColor="#284775" /><EditRowStyle BackColor="#999999" /><FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /><HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /><PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /><RowStyle BackColor="#F7F6F3" ForeColor="#333333" /><SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /><SortedAscendingCellStyle BackColor="#E9E7E2" /><SortedAscendingHeaderStyle BackColor="#506C8C" /><SortedDescendingCellStyle BackColor="#FFFDF8" /><SortedDescendingHeaderStyle BackColor="#6F8DAE" /></asp:GridView></div></form>
</body>// .aspx.cs文件protected void Page_Load(object sender, EventArgs e){SqlConnection sqlConnection = new SqlConnection("Server=DEITIVOD;Database=db_LibraryMS;User Id=sa;pwd=admin");SqlDataAdapter sqlDataAdapter = new SqlDataAdapter("select * from leaveword;", sqlConnection);DataSet dataSet = new DataSet();sqlDataAdapter.Fill(dataSet);GridView1.DataSource = dataSet; // 指定数据集GridView1.DataBind(); // 执行数据绑定
}
数据库中leaveword数据表的数据如下所示:
执行效果如下,ASP页面中显示的数据:
3.2.3. 自定义GridView控件的列字段名
GridView中的数据列分为7种类型
数据列 | 说明 |
---|---|
BoundFiled | 最常用的数据列,用来显示文本 |
CheckBoxFiled | 用来显示Boolean值 |
CommandFiled | 用来显示执行选择、编辑和删除操作的命令按钮 |
ImageFiled | 用来显示图片 |
HyperLinkFiled | 用来将数据以超链接的形式显示出来 |
ButtonFiled | 用来为GridView控件创建命令按钮,该按钮可以操作其所在行的数据 |
TemplateFiled | 用来给用户提供自定义类型的数据列 |
在VS开发环境中按下面的步骤操作,以BoundFiled 为例将GridView中的字段名修改为中文显示:
如果只想显示我们自定义的列,可以将AutoGenerateColumns设置为False
上面两张图的内容也可以通过下面的代码实现:
// .aspx文件
<body><form id="form1" runat="server"><div><!-- GridView控件绑定数据源,并且自定义列 --><asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"><Columns><asp:BoundField DataField="title" HeaderText="图书编号" /><asp:BoundField DataField="email" HeaderText="邮箱" /><asp:BoundField DataField="context" HeaderText="内容" /></Columns></asp:GridView></div></form>
</body>// .aspx.cs文件
protected void Page_Load(object sender, EventArgs e){SqlConnection sqlConnection = new SqlConnection("Server=DEITIVOD;Database=db_LibraryMS;User Id=sa;pwd=admin");SqlDataAdapter sqlDataAdapter = new SqlDataAdapter("select * from leaveword;", sqlConnection);DataSet dataSet = new DataSet();sqlDataAdapter.Fill(dataSet);GridView1.DataSource = dataSet; // 指定数据集GridView1.DataBind(); // 执行数据绑定
}
效果如下,左边是直接指定数据源时的表格,右边是对列自定义的表格:
3.2.4. 使用GridView控件分页显示数据
使用GridView控件分页显示数据主要用到了以下两个属性和一个事件:
- AllowPaging属性,用来决定是否启用分页功能
- PageSize属性,设置分页时每页显示几条记录,默认是12条
- PageIndexChanging事件,用来响应用户的页面切换指令
下图的GridView属性说明了该GridView开启了分页功能,每页是展示3条记录
下面的代码,在开启分页功能的基础上重写了PageIndexChanging事件,实现了GridView的分页功能:
// .aspx文件
<body><form id="form1" runat="server"><div><!-- GridView控件绑定数据源,并且使用分页功能 --><asp:GridView ID="GridView1" runat="server" AllowPaging="True" OnPageIndexChanging="GridView1_PageIndexChanging" PageSize="3"></asp:GridView></div></form>
</body>// .aspx.cs文件
protected void Page_Load(object sender, EventArgs e){SqlConnection sqlConnection = new SqlConnection("Server=DEITIVOD;Database=db_LibraryMS;User Id=sa;pwd=admin");SqlDataAdapter sqlDataAdapter = new SqlDataAdapter("select * from leaveword;", sqlConnection);DataSet dataSet = new DataSet();sqlDataAdapter.Fill(dataSet);GridView1.DataSource = dataSet; // 指定数据集GridView1.DataBind(); // 执行数据绑定
}protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e){// 设置当前页为新页GridView1.PageIndex = e.NewPageIndex;// 绑定新页数据GridView1.DataBind();
}
执行结果如下:
3.2.5. 选中、编辑和删除GridView数据项
在ASP.NET中实现选中、编辑和删除GridView数据项
3.3. DataList 控件
3.3.1. DataList 模板
DataList控件是一个常用的数据绑定控件,可以称之为迭代控件,该控件能够以某种设定好的模板格式循环显示多条数据,这种模板格式是可以根据需要进行自定义的,比较于GridView控件,虽然GridView控件功能非常强大,但它始终只能以表格的形式显示数据,而使用DataList控件则灵活性非常强,其本身就是一个富有弹性的控件。
DataList中一共有以下几种模板:
模板 | 说明 |
---|---|
ItemTemplate | 为项提供内容 |
AlternatingltemTemplate | 为交替项提供内容,是ItemTemplate的扩展 |
SelectedltemTemplate | 为当前选定项提供内容 |
EditltemTemplate | 为当前编辑项提供内容 |
HeaderTemplate | 为页眉提供内容 |
FooterTemplate | 为页脚提供内容 |
3.3.2. 分页显示DataList控件中的数据
DataList本身不具有分页功能,为了实现分页功能,需要借助PagedDataSource类,例如这个例子
3.4. ListView控件
3.4.1. ListView控件概述
ListView控件用于显示数据,它提供了编辑、删除、插入、分页与排序等功能,ListView大部分的属性方法和事件与GridView和DataList一致,可以理解为GridView控件与DataList控件的融合,它具有GridView控件编辑数据的功能,同时又具有DataList控件灵活布局的功能。
3.4.2. ListView控件的模板
ListView控件有非常多的模板,其中最常用的有六个
模板 | 说明 |
---|---|
ItemTemplate | 为项提供内容 |
GroupTemplate | 为组提供内容,它包含一个占位符对象,可以由其他模板中的内容进行替换 |
SelectedltemTemplate | 为当前选定项提供内容 |
EditltemTemplate | 为当前编辑项提供内容 |
InsertltemTemplate | 为插入项提供内容 |
EmptyDataTemplate | 在数据源未返回数据时提供内容 |
3.4.3. 使用ListView控件对数据进行显示、分页和排序
使用ListView控件对数据进行分页需要用到标签,这是一个用于分页的控件。排序需要用到CommandName属性,令其值为sort,指定要进行排序操作,然后再指定CommandArgument属性,令其值为要排序的列。
使用ListView控件显示数据只需配置数据源即可,而无需写任何一行操作数据库的代码,效果如下:
实现步骤
ASP.NET 数据绑定详解 代码+步骤相关推荐
- asp.net OutputCache 详解的代码
下面的代码内容是关于asp.net OutputCache 详解的代码. <%@ OutputCache Duration="120" VaryByParam="n ...
- Asp 时间函数详解
now() 获取当前系统日期和时间,ASP输出可以这样写:<%=now()%> Year(now()) 获取年份, ASP输出:<%=Year(now())%> Month(n ...
- 『ML笔记』HOG特征提取原理详解+代码
HOG特征提取原理详解+代码! 文章目录 一. HOG特征介绍 二. HOG算法具体流程+代码 2.1. 图像灰度化和gamma矫正 2.2. 计算图像像素梯度图 2.3. 在8×8的网格中计算梯度直 ...
- 五分钟搞懂后缀数组!后缀数组解析以及应用(附详解代码)
为什么学后缀数组 后缀数组是一个比较强大的处理字符串的算法,是有关字符串的基础算法,所以必须掌握. 学会后缀自动机(SAM)就不用学后缀数组(SA)了?不,虽然SAM看起来更为强大和全面,但是有些SA ...
- angular元素属性绑定_AngularJS语法基础及数据绑定——详解各种数据绑定指令、属性应用...
AngularJS简单易学,但是功能强大.特别是在构建单页面应用方面效果显著.而 数据绑定 可以说是他被广泛使用的最主要的优点.他舍弃了对DOM的操作方式,一切都由AngularJS来自动更新视图,我 ...
- 23种设计模式详解(代码讲解、持续更新)
目录 设计模式分类 设计模式的六大原则 创建型模式 1.工厂方法模式(Factory Method) 2.建造者模式(Builder Pattern(常用.常见)) 行为型模式 模板模式(Templa ...
- iOS 内购详解-代码篇
内购项目-代码篇 一.分步骤说明 1.获取商品列表 2.苹果服务器返回的可购买商品 3.下单购买商品 4.购买队列状态变化,判断购买状态是否成功 5.交易验证 6.拿到的收据信息是,此App所有购买的 ...
- 【嵌入式开发】 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42462795 转载请著名出处 相关资源下载 : -- u-boo ...
- xvid 详解 代码分析 编译等
1. Xvid参数详解 众所周知,Mencoder以其极高的压缩速率和不错的画质赢得了很多朋友的认同! 原来用Mencoder压缩Xvid的AVI都是使用Xvid编码器的默认设置,现在我来给大家冲 ...
最新文章
- Oracle存在修改,不存在插入记录
- java 内存溢出和内存泄漏_JAVA中的内存溢出和内存泄漏有很大的区别
- 迭代器和反向迭代器,常量迭代器和非常量迭代器
- win7win10 配置wlan热点
- Docker 网络-端口映射、容器链接、Networking
- Mac. 修改bash_file
- 真实用!推荐一款与Swagger媲美的数据库文档生成工具...
- Thread.Sleep()
- CentOS6.6下搭建vsftpd+PAM认证
- x264 vbv-maxrate与vbv-bufsize对码率控制
- 计算机技术与软件专业技术资格(水平)考试
- spring boot图书管理系统 毕业设计-附源码160934
- 韦诺之战当前的游戏开发策略
- 牛年第一瓜!阿里女员工被初中文化男子骗走 500 多万元。。。
- 2020考研上海交通大学823计算机通信网真题回忆
- 最全Android 开发和安全系列工具
- 人类高质量程序员老李是如何过七夕的?
- 前端三剑客HTML学习笔记
- python读docx文件_Python读写docx文件的方法
- latex文档排版时空出一行的命令
热门文章
- Windows Server 2016修改Administrator的密码
- 计算机一级windows2000,2012年一级BWindows2000操作系统[2]
- app ui设计规范
- Python零基础速成班-第9讲-Python面向对象编程(上),对象和类、初始化、继承、重写、多态、类方法、组合
- mysql数据库的空间释放
- mysql8.0安装设置密码_mysql8.0.11安装配置方法图文教程 MySQL8.0新密码认证方式
- 天梯赛:L1-039 古风排版
- net-java-php-python-高校新生报到管理系统计算机毕业设计程序
- c语言求n个数中最大值和最小值,C语言:从键盘输入n个数,求最大值和最小值(用数组)...
- 关于CG,CV,DIP