zoukankan      html  css  js  c++  java
  • Repeater 控件使用总结

     
    关于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,数据源控件、数据绑定程序的叙述不再赘述。
    作者:Elaine
    交流QQ:392989505
  • 相关阅读:
    This counter can increment, decrement or skip ahead by an arbitrary amount
    LUT4/MUXF5/MUXF6 logic : Multiplexer 8:1
    synthesisable VHDL for a fixed ratio frequency divider
    Bucket Brigade FIFO SRL16E ( VHDL )
    srl16e fifo verilog
    DualPort Block RAM with Two Write Ports and Bytewide Write Enable in ReadFirst Mode
    Parametrilayze based on SRL16 shift register FIFO
    stm32 spi sdcard fatfs
    SPI bus master for System09 (2)
    SQLSERVER中的自旋锁
  • 原文地址:https://www.cnblogs.com/ITGirl00/p/3350795.html
Copyright © 2011-2022 走看看