iT邦幫忙

DAY 22
2

Kuick Hands on Labs系列 第 22

Kuick Hands on Labs -- 22. 優化新增表單(主鍵與其他部份)

新增表單最後一部份的內容,包含主鍵欄位、系統欄位、欄位預設值(區分成設計期與執行期定義的預設值)。
<主鍵>
為了要將主鍵欄位置於新增表單的一開始,所以需要先取出 Entity 所有主鍵欄位,再依據定義顯示欄位表單。

  1. 選取所有主鍵
    一般情況,每個 Entity 都應該有1個主鍵,而且只有1個主鍵,但是實際情況可能是沒有設定主鍵,或是複合主鍵。沒有主鍵,要如何準確定義修刪的資料是那一筆,這會是個問題,所以暫且限定所有的 Entity 都有設定主鍵。在完美的情況下,Entity 都只會有1個主鍵欄位,可以從 Entity.KeyColumn 屬性取得定義,但是在開發共用的後台時,就得改用另一個屬性 KeyColumns,以取得主鍵定義集合。

    IEntity schema = EntityCache.Get(EntityName);
    schema.KeyColumn; // 單一主鍵
    schema.KeyColumns; // 複合主鍵

  2. 顯示表單
    主鍵在新增表單裡,可以暫且視同其他欄位的處理方式,後續說明再進行細節處理。

<系統欄位>
Entity 欄位使用 ColumnVisualAttribute 設定表單顯示定義,定義時傳入 VisualFlag 位元旗標列舉,可以設定的情況如下:
ShowBulkEdit -- 顯示於批次修改表單
HideInAdd -- 不顯示於新增表單
HideInModify -- 不顯示於修改表單
HideInList -- 不顯示於列表
SystemColumn -- 不顯示於新增修改表單與列表

例如 ObjectEntity.LastModifiedDate 欄位的定義

[DataMember]
[Category(DataConstants.Entity.Category)]
[ColumnSpec(LAST_MODIFIED_DATE)]
[ColumnInitiate(InitiateValue.Date17AutoUpdate)]
[ColumnVisual(VisualFlag.SystemColumn)] // 設定表單顯示定義
[IgnoreDiff]
public DateTime LastModifiedDate { get; set; }

<欄位預設值>
Entity 欄位使用 ColumnInitiate 於設計期設定欄位預設值,如果沒有設定,執行期就會依據 .Net 的資料型態預設值與欄位資料定義是否為 nullable,決定預設值。另外一個部份是依據執行期的需要,由新增表單本身,或是前一個網頁的指定,為特定欄位給定預設值,這部份的處理與修改表單有關,就留待後面再說。


上一篇
Kuick Hands on Labs -- 21. 優化新增表單(布林與日期欄位)
下一篇
Kuick Hands on Labs -- 23. 儲存新增表單資料
系列文
Kuick Hands on Labs30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言