自定义数据显示格式化

GridView的RowDataBound事件自定义格式化

前面我们讨论了在FormView和DetailsView中实现数据绑定的步骤,现在让我们回顾下

  1. DataBinding事件触发
  2. 数据绑定到数据绑定控件
  3. DataBound事件触发

对于FormView和DetailsView有效因为只需要显示一个数据,而在GridView中,则要显示所有数据,相对于前面三个步骤,步骤二有些不同

在步骤二中,GridView 列出所有的数据,对于某一个记录将创建一个GridViewRow 实例并绑定,对于每个添加到GridView 中的 GridViewRow两个事件将会触发:

·         RowCreated – 当GridViewRow被创建时触发

·         RowDataBound – 当前记录绑定到GridViewRow时触发.

 

对于GridView,请使用下面的步骤

  1. DataBinding事件触发
  2. 数据绑定到数据绑定控件

对于每一行数据..

a.       创建GridViewRow

b.       触发 RowCreated 事件

c.       绑定数据到GridViewRow

d.       触发RowDataBound事件

e.       添加GridViewRow到Rows 集合

  1. DataBound事件触发
  运用 RowDataBound 事件处理时, GridView 由各种类型不同的行组成,而事件发生针对所有的行类型 , GridViewRow 的类型可以由 RowType 属性决定,可以是以下类型中的一种

·         DataRow – GridView的DataSource中的一条记录

·         EmptyDataRow – GridView的DataSource显示出来的某一行为空

·         Footer – 底部行; 显示由GridView的ShowFooter属性决定

·         Header – 头部行; 显示由GridView的ShowHeader属性决定

·         Pager – GridView的分页,这一行显示分页的标记

·         Separator – 对于GridView不可用,但是对于DataList和Reapter的RowType属性却很有用,我们将在将来的文章中讨论他们

当上面四种(DataRow, Pager Rows Footer, Header)都不合适对应值时,将返回一个空的数据项, 所以我们需要在代码中检查GridViewRow的RowType属性来确定:

protected   void  HighlightCheapProducts_RowDataBound( object  sender, GridViewRowEventArgs e)

{

        
// Make sure we are working with a DataRow

        
if (e.Row.RowType == DataControlRowType.DataRow)

        
{

            
// Get the ProductsRow object from the DataItem property...

            Northwind.ProductsRow product 
= (Northwind.ProductsRow)((System.Data.DataRowView)e.Row.DataItem).Row;

            
if (!product.IsUnitPriceNull() && product.UnitPrice < 10m)

            
{

                
// TODO: Highlight row yellow...

            }


        }


}

我们需要访问GridViewID.Rows[index]来访问index对应的那一行,GridViewID.Rows[index].Cells[index]来访问某一单元格.然而当RowDataBound事件触发时,GridViewRow却没有添加到Rows集合中, 因此我们不能在RowDataBound事件处理中通过当前GridViewRow实例 取而代之,我们可以通过e.Row来访问。为了高亮某一行我们用下面的代码

e.Row.BackColor  =  System.Drawing.Color.Yellow;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值