首页 / 网页编程 / ASP.NET / ASP.NET 2.0数据教程之三十:格式化DataList和Repeater的数据
ASP.NET 2.0数据教程之三十:格式化DataList和Repeater的数据2010-08-10 翻译:cnblogs 有些伤感返回“”导言在前面的教程里我们学习了DataList提供了一些风格样式的属性. 而且我们还学习了如何定义HeadStyle, ItemStyle, AlternatingItemStyle, 和 SelectedItemStyle等属性的默认CSS.除了这四个属性外,DataList还提供了其它 属性,比如Font, ForeColor, BackColor, 和BorderWidth.而Repeater没有提供任 何这样的属性.如果你需要用Reperter来实现这些效果,你就需要在templates里直接写标记语言.通常,数据需要怎样的格式取决于数 据本身.比如,我们可能使用灰色的字体列出那些被停止使用的product,或者在 UnitsInStock等于0的时候显示高亮.前面的教程里我们已经学习了GridView, DetailsView, 和FormView 都提供了两种截然不同的格式化数据的方 法.DataBound 事件— 为DataBound 事件创建一个合适的event handler, 它在数据绑定到item的时候激发(对GridView来说是RowDataBound 事件 ;对 DataList 和Repeater来说是 ItemDataBound 事件). 在这些事件里, 刚刚绑 定的数据可以被格式化. 参见基于数据的自定义格式化这章.Templates 的格式化功能— 在DetailsView 或GridView 里使用TemplateFields , 或 在FormView 里使用template , 我们可以在ASP.NET page的code-behind class里 或者BLL里,或者任何其它web程序里可以调用的类库里加格式化信息. 这种格式化 功能可以接收任意的输入参数, 但是在template里比如返回HTML . 格式化功能最 早在在GridView控件中使用TemplateField 这章里谈到过.这两种方法都 可以在DataList和Repeater里使用.在本章里我们将一步步用这两种方法在这两个 控件里做示例.使用ItemDataBound Event Handler当数据绑定到 DataList时, 无论是使用数据源控件或者 直接在代码里使用DataSource和 DataBind() , DataList的DataBinding 事件都会被激发. DataList 为数据源的 每条记录创建一个 DataListItem 对象,然后绑定到当前记录. 在这个过程中 DataList 激发两个事件:ItemCreated — 在创建DataListItem 后 激发ItemDataBound — 当前记录绑定到DataListItem 后激发下面列出了DataList数据绑定过程的大概步骤DataList的 DataBinding event 被激发DataList对数据源的每条记 录...For each record in the data source…创建一个 DataListItem 对象激发ItemCreated event绑定记录到 DataListItem激发ItemDataBound event将DataListItem 添加到 Items collection当数据绑定到Repeater时,和上面所说的情况一样.唯一 的区别在于,DataListItem换成了RepeaterItem.注意:细心的读者可能注 意到了DataList和Repeater绑定到数据时的步骤顺序和GridView有些许差别.在数 据绑定过程的后期,GridView会激发DataBound事件,而DataList和Repeater则都没 有这个事件.和GridView一样,可以为ItemDataBound事件创建一个event handler 来格式化数据.这个event handler 可以处理刚刚绑定到DataListItem或 RepeaterItem的数据,来按照需要进行格式化.对DataList来说,可以使用 风格样式相关的属性,如Font, ForeColor, BackColor, CssClass等,来格式化 item.而如果你想格式化Datalist里的template里的web控件,你需要编程去获取这 些控件,然后来控制.我们在Custom Formatting Based Upon Data一章里已经看过 怎样做.和Repeater控件一样,RepeaterItem类也没有风格样式相关的属性,因此, 你需要在ItemDataBound event handler里编程去实现.由于在DataList和 Repeater里使用ItemDataBound格式化技术从本质上来说是由于的,因此我们的示 例主要讲DataList.