iT邦幫忙

DAY 19
1

Kuick Hands on Labs系列 第 19

Kuick Hands on Labs -- 19. 優化新增表單(列舉欄位)

如同優化列表資料一樣,新增表單欄位更需要依據規格定義,提供最合適的編修條件。首先,從優化列舉欄位說起。
列舉 (Enumeration) 資料型態在程式開發中的重要性已經無需多言,ORM 實作支援列舉欄位的困難度,可以由微軟 EF Team 的 Diego B Vega 回應這項功能支援時程的提問 Still No Enum Support?,可以窺見大概, Entity Framework 則是直到 4.1 版之後才支援列舉資料型態欄位。

今天暫且說明一般的列舉欄位,至於加註 System.FlagsAttribute 的位元旗標列舉,留待之後說明。列舉型態欄位在新增表單的呈現,可以採用 <radio> 與 <select> 2 種設計模式,下面只說明 <radio> 的實作方式,<select> 表單的呈現方式相似,這裡就不多說。

處理步驟:
1. 判定資料欄位是否為列舉型態
Column 類別提供 IsEnum 屬性,可以自我描述是否為列舉型態。

if(column.IsEnum){
	// code here!
}

2. 從列舉快取裡,取出該列舉欄位型態 (column.Property.PropertyType) 的列舉物件定義

EnumReference ef = EnumCache.Get(column.Property.PropertyType);

3. 以<radio>表單呈現
<radio> 的 name 屬性值,一樣是由 Column.AsName 定義,id 屬性是為了配合可以從點選<label> 字串而選取特定項目,所以採用 {Column.AsName}_{EnumItem.Value} 定義。

foreach(EnumItem ei in ef.Items) {
	sb.AppendFormat(
		"<input type=\"radio\" id=\"{0}\" name=\"{1}\" value=\"{2}\"><label for=\"{0}\">{3}</label>",
		column.AsName + "_" + ei.Value,
		column.AsName,
		ei.Value,
		ei.Title
	);
}

這樣的程式碼,將會產生下面的表單樣式:


上一篇
Kuick Hands on Labs -- 18. 資料新增表單
下一篇
Kuick Hands on Labs -- 20. 優化新增表單(外鍵欄位)
系列文
Kuick Hands on Labs30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言