概述ASP.NET 2.0的FormView控件
ASP.NET 2.0的FormView控件類似于DetailsView控件,因為它能方便地顯示后端數據源的單個記錄。本文將討論這個控件的語法和應用。
用戶化
雖然這兩個控件一次顯示一條記錄,DetailsView和FormView的關鍵差別在于:FormView利用用戶定義的模板;而 DetailsView則使用行字段。FormView控件沒有預先定義數據布局;相反,你建立一個包含控件的模板來顯示記錄中的單個字段。模板中包含建立表單所要用到的格式、控件和綁定表達式。
你可以控制數據記錄以三種形式顯示:編輯、查看和添加一條新記錄。另外,你可以包括和格式化標題與頁腳元素。你還可以利用FormView控件各個部分中的任何一個有效的ASP.NET 2.0的FormView控件。
語法
宣稱和使用一個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控件令人驚喜。FormView對DetailsView的簡單功能進行了擴張,允許你根據需要輕松控制要格式化的顯示內容。這個新控件為你交付解決方案提供另一個選項。
- <asp:FormViewAllowPagingasp:FormViewAllowPaging="True|False"BackColor=
"color name|#dddddd"BorderColor="color name|#dddddd"- BorderStyle="NotSet|None|Dotted|Dashed|Solid|Double|Groove|Ridge|Inset|
Outset"BorderWidth="size"- Caption="string"CaptionAlign="NotSet|Top|Bottom|Left|Right"CellPadding=
"integer"CellSpacing="integer"CssClass="string"DataKeyNames="string"
DataSourceID="string"DefaultMode="ReadOnly|Edit|Insert"EmptyDataText="string"- Enabled="True|False"GridLines="None|Horizontal|Vertical|Both"runat=
"server"SkinID="string"- Style="string"
- Visible="True|False">
- <%@ Page Language="C#" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head runat="server">
- <title>FormView Example</title>
- </head><body>
- <form id="frmFormViewExample" runat="server">
- <asp:SqlDataSource
- ID="fvExample"
- ConnectionString="Server=localhost;Database=Northwind;Trusted_Connection=true"
SelectCommand="SELECT EmployeeID, LastName, FirstName, HomePhone, HireDate FROM
Employees" Runat="Server" UpdateCommand="UPDATE Employees SET LastName=@LastName,
FirstName=@FirstName, HomePhone=@HomePhone, HireDate=@HireDate WHERE
EmployeeID=@EmployeeID" DeleteCommand="DELETE FROM Employees WHERE
EmployeeID=@EmployeeID"InsertCommand="INSERT INTO Employees (LastName,
FirstName, HomePhone, HireDate) VALUES (@LastName, @FirstName, @HomePhone, @HireDate)" />- <div>
- <asp:FormView ID="EmpDetails" runat="server" DataKeyNames="Employeeid"
DataSourceId="fvExample" AllowPaging="true">- <ItemTemplate>
- <table style="font-family: Sans Serif; font-size: medium;">
- <tr><td colspan="2" style="background: gray; font-weight: bold;">
- <%# Eval("LastName") + ", " + Eval("FirstName") %></td></tr>
- <tr><td>ID</td>
- <td><%# Eval("EmployeeID") %></td></tr>
- <tr><td>Phone</td>
- <td><%# Eval("HomePhone") %><br></td></tr>
- <tr><td>Hired</td>
- <td><%# Eval("HireDate", "") %><br></td></tr>
- <tr><td colspan="2">
- <asp:Button ID="btnEdit" CommandName="Edit" Text="Edit" runat="server"/>
- <asp:Button ID="btnDelete" CommandName="Delete" Text="Delete" runat="server"/>
- <asp:Button ID="btnAdd" CommandName="New" Text="New" runat="server"/></td></tr>
- </table>
- </ItemTemplate>
- <EditItemTemplate>
- <table>
- <tr><td>ID</td>
- <td><%# Eval("EmployeeID") %><br></td></tr>
- <tr><td>Last Name</td>
- <td><asp:TextBoxRunatasp:TextBoxRunat="server" ID="TextBox2" Text='
<%# Bind("LastName") %>' /></td>- </tr>
- <tr><td>First Name</td>
- <td><asp:TextBoxRunatasp:TextBoxRunat="server" ID="FirstName" Text='
<%# Bind("FirstName") %>' /></td>- </tr>
- <tr><td>Phone</td>
- <td><asp:TextBoxRunatasp:TextBoxRunat="server" ID="txtPhone" Text='
<%# Bind("HomePhone") %>' /></td>- </tr>
- <tr><td>Hire Date</td>
- <td><asp:TextBoxRunatasp:TextBoxRunat="server" ID="txtHireDate" Text='
<%# Bind("HireDate") %>' /></td></tr>- <tr><td colspan="2">
- <asp:Button ID="btnUpdate" CommandName="Update" Text="Update Employee"
runat="server"/>- <asp:Button ID="btnCancel" CommandName="Cancel" Text="Cancel" runat=
"server"/></td></tr></table>- </EditItemTemplate>
- <InsertItemTemplate>
- <table>
- <tr><td><b>Last Name</b></td>
- <td><asp:TextBoxRunatasp:TextBoxRunat="server" ID="TextBox1" Text='
<%# Bind("HomePhone") %>' /></td></tr>- <tr><td><b>First Name</b></td>
- <td><asp:TextBoxRunatasp:TextBoxRunat="server" ID="FirstName" Text='
<%# Bind("FirstName") %>' /></td></tr>- <tr><td><b>Home Phone</b></td>
- <td><asp:TextBoxRunatasp:TextBoxRunat="server" ID="txtHomePhone2" Text='
<%# Bind("HomePhone") %>' /></td></tr>- <tr><td><b>Hired</b></td>
- <td><asp:TextBoxRunatasp:TextBoxRunat="server" ID="txtHireDate2" Text='
<%# Bind("HireDate") %>' /></td></tr>- <tr><td colspan="2">
- <asp:Button ID="btnInsert" CommandName="Insert" Text="Save" runat="server"/>
- <asp:Button ID="btnCancel2" CommandName="Cancel" Text="Cancel" runat=
"server"/></td></tr>- </table>
- </InsertItemTemplate>
- </asp:FormView>
- </div></form></body></html>
【編輯推薦】