Scott Mitchell的ASP.NET 2.0数据教程之十一:基于数据的自定义格式化2010-08-08 翻译:cnblogs 回来了返回“”原文地址: http://www.asp.net/learn/data-access/tutorial-11-cs.aspx介绍我们可以通过控制HeaderStyle, RowStyle, AlternatingRowStyle和其他 一些属性来改变GridView, DetailsView, 和 FormView的样式,比如cssClass, Font, BorderWidth, BorderStyle, BorderColor, Width, Height等一般 ,自定义格式化与我们所要显示的数据的值有关系。例如, 为了吸引用户注意那些 库存为空的产品,我们可以将库存对应的字段UnitsInStock 和UnitsOnOrder为0 的数据背景色设为黄色. 为了高亮化那些贵的产品,则将UnitsInStock 高于 $75.00的数据字体设置为粗体GridView, DetailsView, FormView的格式 自定义可以有多种方法, 在本文中我们将用DataBound 和 RowDataBound两种事件 来完成, 在下一篇里我们将尝试用alternative的方式 在GridView控件中使用 TemplateField使用DetailsView 控件的 DataBound 事件当绑定数据 到DetailsView控件, 不管是从数据控件或编码填充数据到DataSource属性并调用 其DataBind()方法。以下几种事件将触发DataBinding事件触发数 据绑定到数据绑定控件DataBound事件触发一般在1,2,3之后数据 将会通过事件立即填充数据控件,我们还可以自定义事件处理来确定数据是否已 经被填充到控件中并按照我们的需要调整显示格式。我们可以来做个例子.我们将 创建一个DetailsView来列出一个产品的一般信息,并且当UnitPrice超过 $75.00 时用粗体,italic字体来显示UnitPrice的值Step 1: 在DetailsView中显 示产品信息在CustomFormatting文件夹下新建一个CustomColors.aspx页面,从 工具箱中拖出一个DetailsView控件到页面中,设置ID为 ExpensiveProductsPriceInBoldItalic绑定到一个新的数据源中,并配置 此数据源到业务对象ProductsBLL类中的GetProducts()方法,这个的详细实现步骤 已经在前面详细介绍过了,这里就忽略了当您绑定ObjectDataSource到 DetailsView时,我们可以修改一下字段列表,我选择移除了ProductID, SupplierID, CategoryID, UnitsInStock, UnitsOnOrder, ReorderLevel和那些 不被绑定的字段,他们将不会显示在DetailsView列表中,而那些留下来的我们可 以重命名他们,还可以修改他们的显示格式. 我还清空了DetailsView的Height和 Width属性,这样当显示的只有一条数据时不会出现样式的混乱。当然我们面对的 数据绝不只有一条这么少,显示怎么办呢?我们可以检查DetailsView的智能感知 中检查Enable Paging checkbox是否被勾选上, 这样我们可以分页查看所有的数 据了

图一: 在DetailsView的值能感知中检查Enable Paging属性是否被勾选 上在经过这些改变后, DetailsView的代码更改为
<asp:DetailsView ID="DetailsView1" runat="server" AllowPaging="True" AutoGenerateRows="False" DataKeyNames="ProductID" DataSourceID="ObjectDataSource1" EnableViewState="False">
<Fields>
<asp:BoundField DataField="ProductName" HeaderText="Product" SortExpression="ProductName" />
<asp:BoundField DataField="CategoryName" HeaderText="Category" ReadOnly="True" SortExpression="CategoryName" />
<asp:BoundField DataField="SupplierName" HeaderText="Supplier" ReadOnly="True" SortExpression="SupplierName" />
<asp:BoundField DataField="QuantityPerUnit" HeaderText="Qty/Unit" SortExpression="QuantityPerUnit" />
<asp:BoundField DataField="UnitPrice" DataFormatString="{0:c}" HeaderText="Price"
HtmlEncode="False" SortExpression="UnitPrice" />
</Fields>
</asp:DetailsView>您这时可以按F5执行看看

图二: DetailsView控件一次显示一个数据