前面教程學習 DataList 提供樣式屬性,及定義 HeaderStyle、ItemStyle、AlternatingItemStyle、SelectedItemStyle 等預設 CSS。除這四個屬性,DataList 還提供 Font、ForeColor、BackColor、BorderWidth 等。Repeater 則無此類屬性,若需此效果需直接在模板撰寫標記。
資料格式化需求通常取決於資料本身。例如:以灰色字體列出停用產品、UnitsInStock 為 0 時高亮顯示。前面教程已學 GridView、DetailsView、FormView 提供兩種截然不同的格式化方法:
RowDataBound,DataList/Repeater 為 ItemDataBound)。在事件中格式化剛繫結資料。參考 基於數據的自定義格式化。兩種方法皆適用於 DataList 與 Repeater。本章將逐步示範這兩種方法在兩控制項中的應用。
資料繫結至 DataList 時(無論使用資料源控制項或程式碼直接用 DataSource 與 DataBind()),DataBinding 事件觸發。DataList 為資料源每筆記錄建立 DataListItem 物件並繫結當前記錄。過程中觸發兩事件:
ItemCreated — 建立 DataListItem 後觸發ItemDataBound — 當前記錄繫結至 DataListItem 後觸發DataList 資料繫結大致步驟:
DataBinding 事件觸發DataListItem 物件ItemCreated 事件DataListItemItemDataBound 事件DataListItem 加入 Items 集合Repeater 同理,差別在於 DataListItem 換成 RepeaterItem。
注意: 細心讀者可能注意到 DataList/Repeater 繫結步驟順序與 GridView 略有不同。GridView 後期觸發 DataBound 事件,DataList/Repeater 則無此事件。
同 GridView,可為 ItemDataBound 建立事件處理器格式化資料。此處理器可處理剛繫結至 DataListItem 或 RepeaterItem 的資料,依需求格式化。
對 DataList,可用樣式相關屬性(Font、ForeColor、BackColor、CssClass 等)格式化項目。若要格式化模板內 Web 控制項,需程式化取得控制項再控制。參考 Custom Formatting Based Upon Data。Repeater 控制項同樣無樣式屬性,需在 ItemDataBound 事件處理器中程式化實現。
因 DataList/Repeater 使用 ItemDataBound 格式化技術本質相同,示範以 DataList 為主。