文章目录

  • 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控件能够指定能够用来填充列表控件的数据源,其中与数据绑定修改的属性有:

  1. DataSource属性,用来设置数据源
  2. DataTextField属性,用来指定提供文本内容的数据源字段
  3. 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控件绑定数据源主要用到

  1. DataSource属性,用来指定数据源
  2. 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控件分页显示数据主要用到了以下两个属性和一个事件:

  1. AllowPaging属性,用来决定是否启用分页功能
  2. PageSize属性,设置分页时每页显示几条记录,默认是12条
  3. 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 数据绑定详解 代码+步骤相关推荐

  1. asp.net OutputCache 详解的代码

    下面的代码内容是关于asp.net OutputCache 详解的代码. <%@ OutputCache Duration="120" VaryByParam="n ...

  2. Asp 时间函数详解

    now() 获取当前系统日期和时间,ASP输出可以这样写:<%=now()%> Year(now()) 获取年份, ASP输出:<%=Year(now())%> Month(n ...

  3. 『ML笔记』HOG特征提取原理详解+代码

    HOG特征提取原理详解+代码! 文章目录 一. HOG特征介绍 二. HOG算法具体流程+代码 2.1. 图像灰度化和gamma矫正 2.2. 计算图像像素梯度图 2.3. 在8×8的网格中计算梯度直 ...

  4. 五分钟搞懂后缀数组!后缀数组解析以及应用(附详解代码)

    为什么学后缀数组 后缀数组是一个比较强大的处理字符串的算法,是有关字符串的基础算法,所以必须掌握. 学会后缀自动机(SAM)就不用学后缀数组(SA)了?不,虽然SAM看起来更为强大和全面,但是有些SA ...

  5. angular元素属性绑定_AngularJS语法基础及数据绑定——详解各种数据绑定指令、属性应用...

    AngularJS简单易学,但是功能强大.特别是在构建单页面应用方面效果显著.而 数据绑定 可以说是他被广泛使用的最主要的优点.他舍弃了对DOM的操作方式,一切都由AngularJS来自动更新视图,我 ...

  6. 23种设计模式详解(代码讲解、持续更新)

    目录 设计模式分类 设计模式的六大原则 创建型模式 1.工厂方法模式(Factory Method) 2.建造者模式(Builder Pattern(常用.常见)) 行为型模式 模板模式(Templa ...

  7. iOS 内购详解-代码篇

    内购项目-代码篇 一.分步骤说明 1.获取商品列表 2.苹果服务器返回的可购买商品 3.下单购买商品 4.购买队列状态变化,判断购买状态是否成功 5.交易验证 6.拿到的收据信息是,此App所有购买的 ...

  8. 【嵌入式开发】 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42462795 转载请著名出处 相关资源下载 :  -- u-boo ...

  9. xvid 详解 代码分析 编译等

    1.   Xvid参数详解 众所周知,Mencoder以其极高的压缩速率和不错的画质赢得了很多朋友的认同! 原来用Mencoder压缩Xvid的AVI都是使用Xvid编码器的默认设置,现在我来给大家冲 ...

最新文章

  1. Oracle存在修改,不存在插入记录
  2. java 内存溢出和内存泄漏_JAVA中的内存溢出和内存泄漏有很大的区别
  3. 迭代器和反向迭代器,常量迭代器和非常量迭代器
  4. win7win10 配置wlan热点
  5. Docker 网络-端口映射、容器链接、Networking
  6. Mac. 修改bash_file
  7. 真实用!推荐一款与Swagger媲美的数据库文档生成工具...
  8. Thread.Sleep()
  9. CentOS6.6下搭建vsftpd+PAM认证
  10. x264 vbv-maxrate与vbv-bufsize对码率控制
  11. 计算机技术与软件专业技术资格(水平)考试
  12. spring boot图书管理系统 毕业设计-附源码160934
  13. 韦诺之战当前的游戏开发策略
  14. 牛年第一瓜!阿里女员工被初中文化男子骗走 500 多万元。。。
  15. 2020考研上海交通大学823计算机通信网真题回忆
  16. 最全Android 开发和安全系列工具
  17. 人类高质量程序员老李是如何过七夕的?
  18. 前端三剑客HTML学习笔记
  19. python读docx文件_Python读写docx文件的方法
  20. latex文档排版时空出一行的命令

热门文章

  1. Windows Server 2016修改Administrator的密码
  2. 计算机一级windows2000,2012年一级BWindows2000操作系统[2]
  3. app ui设计规范
  4. Python零基础速成班-第9讲-Python面向对象编程(上),对象和类、初始化、继承、重写、多态、类方法、组合
  5. mysql数据库的空间释放
  6. mysql8.0安装设置密码_mysql8.0.11安装配置方法图文教程 MySQL8.0新密码认证方式
  7. 天梯赛:L1-039 古风排版
  8. net-java-php-python-高校新生报到管理系统计算机毕业设计程序
  9. c语言求n个数中最大值和最小值,C语言:从键盘输入n个数,求最大值和最小值(用数组)...
  10. 关于CG,CV,DIP