程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Scott Mitchell的ASP.NET 2.0數據教程之十一:基於數據的自定義格式化

Scott Mitchell的ASP.NET 2.0數據教程之十一:基於數據的自定義格式化

編輯:關於ASP.NET

返回“ASP.NET 2.0數據教程目錄”

原文地址: 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控件一次顯示一個數據

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved