关于Repeater控件使用的一些总结,希望能对将来有机会看到这篇日志的同事有所帮助。
也是为了在自己开发有所遗忘的时候能够参考一下。
前言:
Repeater是一个迭代控件,什么是迭代控件呢?书本上的解释是这样的:如果一个ASP.NET数据绑定控件能够遍历一组数据,以将一个ASP.NET
模板应用于每一个数据项,则将这个ASP.NET数据绑定控件称为迭代控件。至于其与列表控件(DropDownList,ListBox,CheckBoxList等,
DataList除外)和视图控件(GridView,FormView,DetailsView等)的区别和比较在此就不赘述了。此处只是把Repeater这个控件做一个编程上的总结。
补充:与 DataGrid 和 DataList 不同,Repeater 类不是从WebControl类派生的。 因此,Repeater 缺少 DataGrid 和 DataList 二者共有的样式属性。
1,
首先,我们来预览一下Repeater空间的模板列表:
     ItemTemplate 
     该模板确定了数据项的呈现样式
     AlternatingItemplate 
     该模板也是用来确定数据项的实现样式,与ItemTemplate定义的样式交替显示,而且在ItemTemplate与AlternatingItemTemplate中定义相同的数据绑定控件时需要将ID属性设为一致。
     HeaderTemplate 
    该模板确定了控件页眉的呈现样式
 
     FooterTemplate 
     该模板确定了控件页脚的呈现样式
 
      SeparatorTemplate 
     该模板定义了数据项间隔的呈现样式
 
      DataSource 
     获取或设置IEnumerable数据源,为填充列表提供任何数据
 
      DataMember 
     获取或设置绑定到该控件的DataSource中指定的表,平时所用较少(一般一个DataSoure中设置一个DataTable)。
 
     DataSourceID 
     获取或设置数据源控件的名称,一般在以申明的方式指定数据源时使用,为填充列表提供任何数据。
Repeater控件通过枚举被绑定的数据源中的数据项来填充Items集合,数据源中包含的所有数据对象都将映射为一个RepeaterItem对象,并插入到Items集合中。
 
 2,
RepeaterItem控件的属性
 DataItem 返回绑定的数据对象,为绑定的Repeater项中返回NULL
 ItemIndex 返回所呈现数据项的索引based 0
 ItemType 返回Repeater呈现项的type包括(Header,Footer,Item,AlternatingItem,Separator)
 
2,Repeater数据绑定的实现
   DataBind,
   要想为Repeater控件生成HTML代码,并将其添加到输出流中以显示到最终的浏览器中,必须调用DataBind方法。此外Repeater控件还提供了一下常用事件。
 
   ItemCommand 
   该事件是Repeater中最常用的一个事件,单击Repeater控件中的按钮(Button或LinkButton)时触发该事件。
 
   ItemCreate 
   在创建一个Repeater项时触发该事件,DataItem属性总是返回NULL
 
   ItemDataBind 
   将Repeater控件中的某个项绑定到基层数据以后触发该事件,ItemTemplate和AlternatingItemTemplate绑定项的DataItem属性不为NULL
 
3,动态定制实现样式呈现
 
 在数据绑定之后需要生成HTML输出,这可以套用实现在各种Template中定制的模板,也可以更具绑定的数据动态生成HTML的样式输出。因此数据项的信息就需要作为动态生成HTML时候的输入参数,Container很好的提供这项功能。在生成HTML的函数中可以使用DataBinder.GetPropertyValue(Container.DataItem,"XXX");来得到指定数据对象(即该Container.DataItem)的指定属性的值。但前提是该属性需要申明为public并且至少有get访问器。否则将不起作用(例如 该属性实现为一个字段)。一般.NET Framework 2.0 实现的数据源控件都符合上述的要求。只有在定制自己的数据源控件时才需要注意上述问题。
举例:
<ItemTemplate><%# GetStyleForItem(Container)%></ItemTemplate>
public string GetStyleForItem(Control dataObj)//public 是必须的
{
 string value = DataBinder.GetPropertyValue(dataObj.DataItem,"XXX");
}
 
4,获取子控件进行编程处理
 
 获取子控件有两种方法可用:
 1,将Container作为参数传到后台函数中。
 例如:<ItemTemplate><%#m_checkbox = (CheckBox)GetCheckBox(Container)%></ItemTemplate>
 public CheckBox GetCheckBox(Control container)
 {
  return (CheckBox)container.FindControl("DontrolID");
 }
 
 2,利用postback事件---ItemCommand来实现
 protected void Repeater1_ItemCommand(object source,RepeaterCommandEventArgs e)
 {
  if(e.CommandName=="checkbox")//如果未指定CommandName属性则也可以用CommandSourc.Text属性。
  CheckBox a = (CheckBox)e.Item.FindControl("ControlID");
  //处理a控件。
 }
5,数据源控件、数据绑定程序的叙述不再赘述。

最新文章

  1. 泛函编程(26)-泛函数据类型-Monad-Applicative Functor Traversal
  2. Windows 8.1 新增控件之 DatePicker
  3. ✡ leetcode 158. Read N Characters Given Read4 II - Call multiple times 对一个文件多次调用read(157题的延伸题) --------- java
  4. CSS3 display:flex和display:box有什么区别
  5. Java之fianl修饰符
  6. apache 根据端口访问配置
  7. nginx源码安装
  8. JAVA调用C语言写的SO文件
  9. js对象3--工厂方法加深引出原型--杂志
  10. Ubuntu下安装可视化SVN客户端Rabbitvcs
  11. 可持久化trie 学习总结
  12. CF 136B Ternary Logic
  13. 自学javaee程序员之路--ssm的小项目(一)
  14. hdu5303Delicious Apples
  15. DBUtils - Python数据库连接池
  16. Linux内核内存管理算法Buddy和Slab: /proc/meminfo、/proc/buddyinfo、/proc/slabinfo
  17. Django+Uwsgi+Nginx
  18. LuoGu P2002 消息扩散
  19. DJango 基础 (4)
  20. oracle取某字符串字段的后4位

热门文章

  1. [Key] RegCure Pro
  2. 密码强度demo(弱中强)
  3. mysqladmin 命令详解
  4. PostgreSql数据库查询表信息/列信息(列ID/列名/数据类型/长度/精度/是否可以为null/默认值/是否自增/是否是主键/列描述)
  5. 微信小程序中target与currentTarget
  6. Solr学习笔记之6、Solr学习资源
  7. ZOJ 2314 - Reactor Cooling - [无源汇上下界可行流]
  8. XTU 1260 - Determinant - [2017湘潭邀请赛A题(江苏省赛)][高斯消元法][快速幂和逆元]
  9. PL/SQL常用语法及举例
  10. 一个JS Class的“增删改查”