如何在DataBound事件中编码确定数据的值


  本文标签:DataBound

  为了将那些UnitPrice高于$75.00的产品用粗体,italic字体显示出来,我们首先需要编码确定UnitPrice的值,对于DetailsView我们可以通过DataBound事件完成. 我们选择DetailsView并查看属性视图(F4位快捷键), 如果没有显示,则选择 View(视图)

  Property Window(属性窗口), 在确保您选择了DetailsView的情况下双击DataBound事件或者输入您要创建的事件名

  为DataBound事件创建一个事件处理 

  DataBound: 为DataBound事件创建一个事件处理

  代码中将会自动生成以下代码

  1. protected void ExpensiveProductsPriceInBoldItalic_DataBound(object sender, EventArgs e)  
  2.  
  3.    {  
  4.  
  5.  
  6.  
  7.    }  

  我们可以通过DataItem属性来设置DetailsView的绑定项(一些强类型的数据行(DataRow)组成的强类型的数据表(DataTable)), 当数据表(DataTable)绑定到DetailsView时,数据表的第一行将被自动绑定到DetailsView的DataItem属性,而DataItem属性中包含有DataRowView (Object类型),我们可以通过DataRowView来访问一个ProductsRow 的DataRow实例,还可以检测Object的值来确定ProductsRow实例是否存在

  下面的代码描述如何确定UnitPrice是否绑定到DetailsView并且高于$75.00

  1. protected void ExpensiveProductsPriceInBoldItalic_DataBound(object sender, EventArgs e)  
  2.  
  3. {  
  4.  
  5.     // Get the ProductsRow object from the DataItem property...  
  6.  
  7.     Northwind.ProductsRow product = (Northwind.ProductsRow)((System.Data.DataRowView) ExpensiveProductsPriceInBoldItalic.DataItem).Row;  
  8.  
  9.     if (!product.IsUnitPriceNull() && product.UnitPrice > 75m)  
  10.  
  11.     {  
  12.  
  13.         // TODO: Make the UnitPrice text bold and italic  
  14.  
  15.     }  
  16.  
  17. }  
  18.  

  注意: 当UnitPrice在数据库的值为空,我们在绑定到ProductsRow’s UnitPrice属性之前检查确定他是否为空,这很重要因为我们可以通过检查这个属性来抛出一个强类型的异常 StrongTypingException exception.