ASP。NET 2.0中怎么格式化DataList和中继器数据

  介绍

这篇文章将为大家详细讲解有关ASP。NET 2.0中怎么格式化DataList和中继器数据,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

<强>第一步:在DataList显示Product 信息

在学习格式化之前,我们首先创建一个使用DataList显示产品信息的页面。在前面一章里,我们创建了一个ItemTemplate显示产品的名称、类别、供应商、数量和价格的DataList。我们在本章来重复做一次。你可以重新创建DataList和它的ObjectDataSource来,或者直接把前面一章里的Basics.aspx里的控件复制到本章的页面(Formatting.aspx)里。当你完成了Formatting.aspx后,将DataList的ID从DataList1改为ItemDataBoundFormattingExample。下面,在浏览器里看看DataList。如图1所示,唯一的格式在于每个产品的交替的背景色。

 ASP。NET 2.0中怎么格式化DataList和中继器数据

<强>图1:在DataList里列出产品信息

在本章教程里,我们来将价格小于20.00美元的产品的名字和单价用黄色高亮来显示。

<强>第二步:在ItemDataBound事件处理程序里编程判断数据的值

由于只有价格低于20.00美元的产品会被格式化,因此我们首先要判断每个产品的价格。在绑定数据到DataList时,DataList为每条数据源的记录创建一个DataListItem实例,并绑定数据。当记录绑定到DataListItem对象后,ItemDataBound事件被激发。我们可以为这个事件创建一个事件处理程序来判断当前DataListItem的值,再根据这个值来格式化数据。
添加以下代码为DataList创建ItemDataBound事件

protected  void  ItemDataBoundFormattingExample_ItemDataBound   ,(object ,发送方,DataListItemEventArgs  e)   {   ,if  (e.Item.ItemType ==, ListItemType.Item  | |==,,e.Item.ItemType  ListItemType.AlternatingItem)   ,{   ,//Programmatically 参考文档,ProductsRow  instance 绑定   ,//用却;能够DataListItem   Northwind.ProductsRow  product =,,(Northwind.ProductsRow) ((System.Data.DataRowView) e.Item.DataItem) .Row;   ,//阅读if 从而UnitPrice  is  not  NULL 以及less  than  20.00美元   ,if  (! product.IsUnitPriceNull (),,,, product.UnitPrice  & lt;, 20)   ,{//才能,待办事项:,Highlight 从而产品# 39;s  name 以及价格   ,}   ,}   }

DataList的ItemDataBound事件处理程序在概念和语义上来说,和显示数据表格的RowDataBound事件处理程序一样(见基于数据的自定义格式化),语法上有一点差别。当ItemDataBound事件激发时,刚刚绑定数据的DataListItem通过e.Item(在显示数据表格里是e.Row和RowDataBound)传递给相关的事件处理程序。DataList的ItemDataBound事件处理程序影响到每一行,包括页眉、页脚和分隔符。但是产品信息只绑定到数据行,因此,在处理ItemDataBound事件前,我们首先要判断处理的是否是数据行。这个可以通过检查DataListItem的ItemType属性来完成,它可以有以下八个值:

AlternatingItem
EditItem
页脚


项寻呼机
设置SelectedItem
分隔符

项和AlternatingItem都表示DataList的数据项。假设我们在处理项或AlternatingItem,我们可以获取绑定到当前DataListItem的ProductsRow的实例.DataListItem的DataItem属性包含了DataRowView对象的引用,通过它的行属性可以获取ProductsRow对象。

下面我们来检查ProductsRow实例的单价属性。由于产品表的UnitPrice字段允许空值,所以在获取UnitPrice属性前我们应该先用IsUnitPriceNull()方法检查这个值是否为空。如果不是,我们再检查看它是否低于20.00美元。如果是,我们就进行格式化处理。

<强>第三步:是产品的名称和价格高亮显示

一旦我们发现产品的价格低于20.00美元,我们将使它的名称和价格显示高亮。首先我们要编程获得ItemTemplate里显示产品的名称和价格的标签控件。然后我们将它的背景色显示为黄色。这个可以直接通过修改标签空间的背景色属性(LabelID。背景色=Color.Yellow)。当然最理想的做法是所有的显示相关的行为都通过CSS来实现。实际上我们在基于数据的自定义格式化一章里创建的风格。css——AffordablePriceEmphasis已经提供了这个功能。

使用以下代码设置两个标签控件的CssClass属性为AffordablePriceEmphasis来完成格式化:

//, Highlight 从而product  name 以及unit  price 标签//,,,get  a 参考文档用,two  Label  Web 控制   Label  ProductNameLabel =,(标签)e.Item.FindControl (“ProductNameLabel");   Label  UnitPriceLabel =,(标签)e.Item.FindControl (“UnitPriceLabel");//,接下来,set  their  CssClass 属性   if  (ProductNameLabel  !=, null)=,ProductNameLabel.CssClass “AffordablePriceEmphasis";   if  (UnitPriceLabel  !=, null)=,UnitPriceLabel.CssClass “AffordablePriceEmphasis"

ASP。NET 2.0中怎么格式化DataList和中继器数据