我的ASP.NET学习之路(1)

来源:互联网 发布:淘宝时间倒计时代码 编辑:程序博客网 时间:2024/05/01 04:53

 最近在工作中经常会用到asp.net的知识,之前对asp.net学习了解的知识比较少,所以在工作中总感觉自己会的东西不够用的。于是决定拿出时间来学习一下,补充一下自己的asp.net知识。写博客的

目的:起到督促学习的作用,不至于半途而费。

学习内容:Repeater 控件使用方法。

之前对这个控件不是很了解,所以这次先拿这个控件开刀了,呵呵。。

上网找了点资料,文章引用地址为:

http://fengyan86.spaces.live.com/blog/cns!C84858449081BC2D!209.trak

Repeater是一个迭代控件,什么是迭代控件呢?

   如果一个ASP.NET数据绑定控件能够遍历一组数据,以将一个ASP.NET

模板应用于每一个数据项,则将这个ASP.NET数据绑定控件称为迭代控件
Repeater空间的模板列表:
   ItemTemplate 
     该模板确定了数据项的呈现样式

     AlternatingItemplate 
     该模板也是用来确定数据项的实现样式,与ItemTemplate定义的样式交替显示,而且在ItemTemplateAlternatingItemTemplate中定义相同的数据绑定控件时需要将ID属性设为一致。

     HeaderTemplate 
    该模板确定了控件页眉的呈现样式
 
     FooterTemplate 
     该模板确定了控件页脚的呈现样式
 
      SeparatorTemplate 
     该模板定义了数据项间隔的呈现样式
 
      DataSource 
     获取或设置IEnumerable数据源,为填充列表提供任何数据
 
      DataMember 
     获取或设置绑定到该控件的DataSource中指定的表,平时所用较少(一般一个DataSoure中设置一个DataTable)。
 
     DataSourceID 
     获取或设置数据源控件的名称,一般在以申明的方式指定数据源时使用,为填充列表提供任何数据。

Repeater控件通过枚举被绑定的数据源中的数据项来填充Items集合,数据源中包含的所有数据对象都将映射为一个RepeaterItem对象,并插入到Items集合中
RepeaterItem控件的属性

 DataItem 返回绑定的数据对象,为绑定的Repeater项中返回NULL

 ItemIndex 返回所呈现数据项的索引(从零开始)
 ItemType 返回Repeater呈现项的type包括(Header,Footer,Item,AlternatingItem,Separator)
Repeater数据绑定的实现
   DataBind,
   要想实现让Repeater控件生成HTML代码,并将其添加到输出流中以显示到最终的浏览器中的目的,必须调用DataBind方法。此外Repeater控件还提供了一下常用事件。
 
   ItemCommand 
   该事件是Repeater中最常用的一个事件,单击Repeater控件中的按钮(Button或LinkButton)时触发该事件。
 
   ItemCreate 
   在创建一个Repeater项时触发该事件,DataItem属性总是返回NULL
 
   ItemDataBind 
   将Repeater控件中的某个项绑定到基层数据(数据源数据)以后触发该事件,ItemTemplate和AlternatingItemTemplate绑定项的DataItem属性不为NULL
 
动态定制实现样式呈现
 
 在数据绑定之后需要生成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");
}
 
获取子控件进行编程处理
 
 获取子控件有两种方法可用:
 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控件。
 }
数据源控件、数据绑定程序的叙述以后再做