ASP.NET 2.0的FormView控制項類似DetailsView控制項,因為它能方便地顯示後端資料來源的單一記錄。本文將討論這個控制項的語法和應用。
使用者化
雖然這兩個控制項一次顯示一筆記錄,DetailsView和FormView的關鍵差異在於:FormView利用使用者定義的範本;而DetailsView則使用行欄位。 FormView控制項沒有預先定義資料佈局;相反,你建立一個包含控制項的範本來顯示記錄中的單一欄位。範本中包含建立表單所要用到的格式、控制項和綁定表達式。
你可以控制資料記錄以三種形式顯示:編輯、檢視和新增一筆新記錄。另外,你可以包含和格式化標題與頁腳元素。你也可以利用FormView控制項各部分中的任何一個有效的ASP.NET控制項。
語法
宣稱和使用一個FormView控制項實例與宣稱和使用一個DetailsView控制項實例非常相似。它們的主要區別是,因為沒有預設設定可以使用,你必須在FormView控制項中包含顯示資料的格式和範本。列表A顯示了開啟FormView元素標籤的一部分語法。
你可能已經注意到,許多屬性和HTML表格元素相對應,例如標題和邊框。這說明ASP.NET使用HTML表格來呈現FormView控制項。
你可以透過微軟網站在線查看一個更全面的FormView控制項屬性清單。下表列出了一些值得關注的重要屬性。
·AllowPaging:一個說明使用者能否對指定資料來源中的記錄分頁的布林值。如果設為真,則在所顯示記錄的底部顯示預設的分頁數字系統(從1到記錄的數量)。分頁連結可以透過各種分頁屬性自訂。
·DataKeyNames:資料來源的鍵欄位。
·DataSourceID:用來移植FormView控制項資料來源元素ID。如果使用SQL Server,它與指派給SqlDataSource元素的ID對應。
·DefaultMode:允許你指定控制項的預設行為。也就是說,在用戶訪問時,它最初如何顯示。可能的值包括:ReadOnly、Insert和Edit。
·EmptyDataText:遇到空資料值時顯示的文字。
宣稱FormView控制項時,也必須對它的內容進行相應格式化。它的數據透過模板顯示。 FormView控制項主要使用五個範本:
·ItemTemplate:它控制使用者查看資料時的顯示情況。
·EditItemTemplate:它決定使用者編輯記錄時的格式和資料元素的顯示情況。在這個模板內,你將使用其它控件,如TextBox元素,允許使用者編輯值。
·InsertItemTemplate:與編輯一筆記錄相似,這個範本控制允許使用者在後端資料來源中新增一筆記錄的欄位的顯示。由於輸入了新的值,應該根據資料的要求允許使用者自由輸入文字或限制某些值。
·FooterTemplate:決定FormView控製表格頁腳部分顯示的內容,如果有的話。
·HeaderTemplate:決定FormView控制項表格標題部分顯示的內容,如果有的話。
這些模板允許你控制綁定到一個FormView控制項的資料的顯示和行為。例如,清單B中的ASP.NET Web表單連接到標準的Northwind資料庫,允許使用者透過名字、姓氏、僱用日期和家庭電話號碼欄位查看、編輯、刪除和新增員工記錄。
它使用TextField控制項顯示被編輯或新增的數據,以及只是為了查閱而顯示的值。 ItemTemplate使用CSS格式化表格,而InsertTemplate則使用HTML樣式格式化,而到底使用哪一種方法由開發者決定。
註:ASP.NET以Button控制項新增、編輯、刪除和儲存記錄。
在Button控制項中,New的CommandName值將記錄轉換為插入模式並載入InsertItemTemplate模板,它允許使用者輸入一個新記錄值。你可以用Edit的CommandName值為ItemTemplate增加一個新按鈕,讓FormView控制項進入編輯模式。
可以為ItemTemplate範本增加一個帶有Delete的CommnadName值的按鈕,允許使用者從資料來源中刪除目前記錄。 Update的CommnadName保存數據,而Cancel終止操作。
開發者控制
許多ASP.NET 2.0新功能的易用性令人驚訝。 FormView對DetailsView的簡單功能進行了擴張,讓你可以根據需要輕鬆控制要格式化的顯示內容。這個新控制項為你交付解決方案提供另一個選項。