DataList的数据绑定

article/2025/8/16 9:00:37

8.4.1  DataList的数据绑定

DataList控件中通过自定义模板来设置数据的显示样式,它支持如下模板类型:

ItemTemplate:包含一些 HTML元素和控件,将为数据源中的每一行呈现一次这些HTML元素和控件。

AlternatingItemTemplate:包含一些HTML元素和控件,将为数据源中的每两行呈现一次这些HTML元素和控件。通常,可以使用此模板来为交替行创建不同的外观,例如指定一个与在ItemTemplate属性中指定的颜色不同的背景色。

SelectedItemTemplate:包含一些元素,当用户选择DataList控件中的某一项时将呈现这些元素。通常,可以使用此模板来通过不同的背景色或字体颜色直观地区分选定的行,还可以通过显示数据源中的其他字段来展开该项。

EditItemTemplate:指定当某项处于编辑模式时的布局。此模板通常包含一些编辑控件,如TextBox控件。

HeaderTemplate和FooterTemplate:包含在列表的开始和结束处分别呈现的文本和控件。

SeparatorTemplate:包含在每项之间呈现的元素。典型的示例是一条直线(使用HR元素)。

通常根据不同的需要定义不同类型的项模板,DataList控件根据项的运行时状态自动加载相应的模板显示数据,例如当某一项被选定后将会以SelectedItemTemplate模板呈现数据,编辑功能被激活时将以EditItemTemplate模板呈现数据。

下面我们通过【例8-7】说明如何通过设置模板为DataList控件定义数据的呈现样式并完成数据绑定。

【例8-7】DataList控件的数据绑定。

(1) 在DataBinding网站中新建一个名为DataListBingding.aspx的页面,在页面上添加一个DataList控件。

(2) 编辑DataList控件,并设置项模板,进行显示字段影射。

在VS2008环境中使用DataList控件的快捷任务面板进入模板的编辑页面,如图8-27所示。

 
(点击查看大图)图8-27  打开DataList的模板编辑器
单击【编辑模板】按钮后进入模板编辑界面,如图8-28所示。
 
(点击查看大图)图8-28 模板编辑界面
在本例中只实现DataList控件的数据绑定,所以只简单地定义一个ItemTemplate即可,单击模板类型后编辑ItemTemplate模板样式如图8-29所示。
 
图8-29  ItemTemplate模板样式

ItemTemplate模板样式中,包含一个两行一列的HTML Table,第一行显示图片,第二行显示记录中的其他字段。回顾一下GridView控件,在设置绑定列时需要同时设置绑定列到数据字段之间的数据映射,DataList控件中的项模板显示数据源每条记录中的各个字段,也需要将模板中的显示控件影射到相应字段,才能在数据绑定后在模板项中显示正确的数据。数据影射通过绑定表达式完成,在项模板中各个显示控件的页面代码中添加如下绑定表达式:<%# Eval("XXX") %>,其中Eval方法用于读取数据绑定后当前显示项中所呈现的数据项(某条记录)的相应字段数据,Eval方法的参数"XXX"用于指定记录中要显示的字段名。我们可以这样来理解<%# Eval("XXX") %>表达式,当在后台代码中为某种数据绑定控件(如这里的DataList)设置数据源并进行数据绑定后,运行时数据源中的记录就会自动与显示项关联,有这种关联作为上下文,只要指定字段名就可以访问到该记录中的字段数据。因为Eval方法需要在数据上下文中读取数据,所以,<%# Eval("XXX") %>表达式只能用在数据绑定控件的模板定义中。

定义模板后的页面代码如下:

 
  1. <div> 
  2.     <asp:DataList ID="DataList1" runat="server" 
    Height="354px" RepeatColumns="3" 
  3.         HorizontalAlign="Justify" RepeatDirection="Horizontal"> 
  4.         <ItemTemplate> 
  5.             <table style="width: 154px; height: 111px"> 
  6.                 <tr> 
  7.                     <td style="width: 100px"> 
  8.                        <img alt="照片" src='./image/
    <%# Eval("photo") %>'
     /></td> 
  9.                 </tr> 
  10.                 <tr> 
  11.                     <td style="width: 100px"> 
  12.                         学号:<%# Eval("no") %><br /> 
  13.                         姓名:<%# Eval("name") %><br /> 
  14.                         年龄:<%# Eval("birth") %><br /> 
  15.                         住址:<%# Eval("address") %></td> 
  16.                 </tr> 
  17.             </table> 
  18.         </ItemTemplate> 
  19.     </asp:DataList> 
  20.  </div> 

项模板第一行图片控件中的表达式<%# Eval("photo") %>表示读取数据源记录中的photo字段值作为图片名称。

(3) 设置DataList的布局属性,采用Table布局,每行显示5项,按行显示,如图8-30所示。

 
图8-30  设置DataList布局属性
(4) 在页面后台类中添加数据绑定代码,如下。
 
  1. protected void Page_Load(object sender, EventArgs e)  
  2. {  
  3.     if (!Page.IsPostBack) listbind();  
  4. }  
  5. void listbind()  
  6. {  
  7.     string sqlconnstr = ConfigurationManager.
    ConnectionStrings["ConnectionString"].ConnectionString; ;  
  8.     DataSet ds = new DataSet();  
  9.     using (SqlConnection sqlconn = new SqlConnection(sqlconnstr))  
  10.     {  
  11.         SqlDataAdapter sqld = new SqlDataAdapter
    ("select * from student", sqlconn);  
  12.         sqld.Fill(ds, "tabstudent");  
  13.     }  
  14.     //以数据集中名为tabstudent的DataTable作为数据源,为控件绑定数据  
  15.     DataList1.DataSource = ds.Tables["tabstudent"].DefaultView;  
  16.     DataList1.DataBind();  

(5) 页面的运行效果如图8-31所示。

 
图8-31  DataListBinding.aspx页面运行效果


http://chatgpt.dhexx.cn/article/kBkfwDTk.shtml

相关文章

datalist标签

学习笔记&#xff0c;仅供参考&#xff0c;有错必纠 参考自&#xff1a;w3school 关于datalist标签 <datalist> 标签定义选项列表&#xff0c;应该与 <input>标签配合使用该&#xff0c;它定义 input 可能的值&#xff1b; <datalist> 及其选项不会被显示出…

datalist 元素

效果图&#xff1a; 代码如下&#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>datalist 元素</title> </head> <body><form action"#" method"post">请输入用户…

<datalist>标签

<datalist>标签是HTML5新增的元素&#xff0c;用于input的标签可选值。 用法&#xff1a;input标签的list属性指定自定义的datalist可选值&#xff0c;datalist的id于list值相同即可完成绑定。 可选值: <input type"text" list"myDatalist">…

数据列表DataList模板之实例

1&#xff0c;数据列表DataList与重复列表Repeator很类似&#xff0c;但是DataList应用更广泛&#xff0c;因为他可以选择和修改数据项的内容。 DataList的数据显示和布局与Repeator控件一样都是通过“模板”控制的。 &#xff08;注&#xff1a;模板至少要定义一个“数据项模…

DataList详细用法

DataList控件与Repeater控件一样由模板驱动,与Repeater控件不同的是: DataList控件默认输出是一个HTML表格.DataList在输出时已经在相应的模板上套上了表格标签,而Repeater则是模板是什么样,输出就是什么样. 1. DataList显示数据 例1:使用DataList显示数据 Code <as…

DataList 用法详解

<% Page Language"C#" AutoEventWireup"true" CodeBehind"DataList.aspx.cs" Inherits"FileUpload自动上传文件.DataList" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w…

datalist标签使用

jsp使用datalist标签写可查询可输入下拉框样式 jsp使用datalist标签写可查询可输入下拉框样式。需求用法 jsp使用datalist标签写可查询可输入下拉框样式。 需求 jsp页面实现可选择,可查询,可输入的下拉选择框, 一段废话 本来想用select看看有什么属性可以实现,但基本上接触的…

DataList内容详解

DataList是另一种显示数据控件&#xff0c;它与GridView不同的是&#xff0c;它全部使用模板进行设计&#xff0c;并且DataList的模板是对整行设置&#xff0c;而不是像GridView那样只对某一列进行模板设计。 正是由于它使用模板进行设计&#xff0c;所以它的灵活性比GridView更…

DataList控件详细用法(一)

使用DataList控件 本章内容&#xff1a; 1、理解事件冒泡 2、使用模板 3、在DataList中显示数据 4、在DataList中创建多列 5、捕获DataList控件中产生的事件 6、选择DataList中的项 7、使用DataList控件中的DataKeys集合 8、编辑DataList中的项 本章介绍在ASP.NET框架中功能…

(13)<datalist> 标签

一、<datalist>标签的作用 <datalist> 标签规定了<input> 元素可能的选项列表。<datalist>元素包含了一组<option>元素&#xff0c;这些元素表示预定义可选值&#xff0c;在<input>元素输入过程中&#xff0c;会自动响应<option>元…

Hibernate缓存的evict、clear和flush方法

evict()、clear()和flush()方法是Hibernate缓存的3种基本操作方法&#xff0c;本文主要介绍这3种方法的使用方式和具体区别。 Company表&#xff1a; Company实体类&#xff1a; import java.util.Set;public class Company {private int companyId;private String companyName…

注册中心日志输出_Running the evict task with compensationTime 0ms_频繁输出这句_SpringCloud工作笔记161

可以在:application.properties 中配置一下不停的打印日志,太烦人了.##Running the evict task with compensationTime 0ms不停的输出这个太烦人了可以关闭 logging.level.com.netflixwarn技术交流QQ群【JAVA,C,Python,.NET,BigData,AI】&#xff1a;170933152 开通了个人技术微…

SpringCloud Eureka注册中心日志输出问题:Running the evict task with compensationTime 0ms

动Eureka注册中心后&#xff0c;控制台一直输出 — [a-EvictionTimer] c.n.e.registry.AbstractInstanceRegistry : Running the evict task with compensationTime 0ms 这段日志&#xff0c;间隔时间与你的配置有关。强迫症看着很烦&#xff0c;那么在开发过程中如何关闭这条日…

HashMap中的putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict)解读

在面试中我们会经常遇到关于HashMap的问题&#xff0c;这里我写了我对HashMap里面一个挺重要的方法 putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict)的理解&#xff0c;下面就是我对这个方法的理解。 其实putVal(int hash, K key, V value, boolean o…

org.hibernate.Session.evict(Object object)方法的使用

在一个实体A、B的关联关系中&#xff0c;如下图&#xff1a; B外键关联A&#xff0c;关联字段A_id A中保存有B的集合blist 在A的实体属性blist&#xff0c;使用懒加载注解&#xff0c;如下: OneToMany(targetEntityB.class, cascade CascadeType.ALL, fetch FetchType.LAZY)…

mysql evict_Hibernate的flush()和evict()

/** * 测试uuid主键生成策略 */ public void testSave1() { Session session null; Transaction tx null; try { session HibernateUtils.getSession(); tx session.beginTransaction(); User1 user new User1(); user.setName("李四"); user.setPassword("…

Ceph Cache Tier中flush和evict机制源码分析

存储系统&#xff1a;ceph-14.2.22 操作系统&#xff1a;ubuntu-server-16.04.07 OSDService::agent_entry [ ceph/src/osd/OSD.cc ] OSD服务启动过程中会创建一个名为osd_srv_agent的线程&#xff0c;在分层存储中&#xff0c;该线程负责缓存池与数据池之间的数据迁移工作。该…

HashMap evict 放逐之旅

HashMap evict 放逐之旅 我不认识的evict小结 我不认识的evict 正在撸猫写代码的我&#xff0c;遇到了一个LinkedHashMap ConcurrentModifyException&#xff0c;真是让人头秃。问题排查过程也是费了一些力气&#xff08;手动狗头&#xff09;&#xff0c;最后发现是我异步请求…

Redis源码剖析之内存淘汰策略(Evict)

文章目录 何为Evict如何EvictRedis中的Evict策略源码剖析LRU具体实现LFU具体实现LFU计数器增长LFU计数器衰减 evict执行过程evict何时执行evict.c 总结 Redis作为一个成熟的数据存储中间件&#xff0c;它提供了完善的数据管理功能&#xff0c;比如之前我们提到过的 数据过期和…