概述ASP.NET 2.0的FormView控件
ASP.NET 2.0的FormView控件類似于DetailsView控件,因?yàn)樗芊奖愕仫@示后端數(shù)據(jù)源的單個(gè)記錄。本文將討論這個(gè)控件的語(yǔ)法和應(yīng)用。
用戶化
雖然這兩個(gè)控件一次顯示一條記錄,DetailsView和FormView的關(guān)鍵差別在于:FormView利用用戶定義的模板;而 DetailsView則使用行字段。FormView控件沒(méi)有預(yù)先定義數(shù)據(jù)布局;相反,你建立一個(gè)包含控件的模板來(lái)顯示記錄中的單個(gè)字段。模板中包含建立表單所要用到的格式、控件和綁定表達(dá)式。
你可以控制數(shù)據(jù)記錄以三種形式顯示:編輯、查看和添加一條新記錄。另外,你可以包括和格式化標(biāo)題與頁(yè)腳元素。你還可以利用FormView控件各個(gè)部分中的任何一個(gè)有效的ASP.NET 2.0的FormView控件。
語(yǔ)法
宣稱和使用一個(gè)FormView控件實(shí)例與宣稱和使用一個(gè)DetailsView控件實(shí)例非常相似。它們的主要區(qū)別是,因?yàn)闆](méi)有默認(rèn)設(shè)置可以使用,你必須在FormView控件中包含顯示數(shù)據(jù)的格式和模板。列表A顯示了打開(kāi)FormView元素標(biāo)簽的一部分語(yǔ)法。
你可能已經(jīng)注意到,許多屬性和HTML表格元素相對(duì)應(yīng),如標(biāo)題和邊框。這說(shuō)明ASP.NET使用HTML表格來(lái)呈現(xiàn)FormView控件。
你可以通過(guò)微軟網(wǎng)站在線查看一個(gè)更加全面的FormView控件屬性列表。下表列出了一些值得關(guān)注的重要屬性。
AllowPaging:一個(gè)說(shuō)明用戶能否對(duì)指定數(shù)據(jù)源中的記錄分頁(yè)的布爾值。如果設(shè)為真,則在所顯示記錄的底部顯示默認(rèn)的分頁(yè)數(shù)字系統(tǒng)(從1到記錄的數(shù)量)。分頁(yè)鏈接可以通過(guò)各種分頁(yè)屬性自定義。
DataKeyNames:數(shù)據(jù)源的鍵字段。
DataSourceID:用來(lái)移植FormView控件數(shù)據(jù)源元素ID。如果使用SQL Server,它與分配給SqlDataSource元素的ID對(duì)應(yīng)。
DefaultMode:允許你指定控件的默認(rèn)行為。也就是說(shuō),在用戶訪問(wèn)時(shí),它最初如何顯示??赡艿闹蛋ǎ篟eadOnly、Insert和Edit。
EmptyDataText:遇到空數(shù)據(jù)值時(shí)顯示的文本。
宣稱FormView控件時(shí),還必須對(duì)它的內(nèi)容進(jìn)行相應(yīng)格式化。它的數(shù)據(jù)通過(guò)模板顯示。FormView控件主要使用五個(gè)模板:
ItemTemplate:它控制用戶查看數(shù)據(jù)時(shí)的顯示情況。
EditItemTemplate:它決定用戶編輯記錄時(shí)的格式和數(shù)據(jù)元素的顯示情況。在這個(gè)模板內(nèi),你將使用其它控件,如TextBox元素,允許用戶編輯值。
InsertItemTemplate:與編輯一條記錄相似,這個(gè)模板控制允許用戶在后端數(shù)據(jù)源中添加一條新記錄的字段的顯示。由于輸入了新的值,應(yīng)該根據(jù)數(shù)據(jù)的要求允許用戶自由輸入文本或限制某些值。
FooterTemplate:決定FormView控件表格頁(yè)腳部分顯示的內(nèi)容,如果有的話。
HeaderTemplate:決定FormView控件表格標(biāo)題部分顯示的內(nèi)容,如果有的話。
這些模板允許你控制綁定到一個(gè)FormView控件的數(shù)據(jù)的顯示和行為。例如,列表B中的ASP.NET Web表單連接到標(biāo)準(zhǔn)的Northwind數(shù)據(jù)庫(kù),允許用戶通過(guò)名字、姓、雇用日期和家庭電話號(hào)碼字段查看、編輯、刪除和添加新的員工記錄。
它使用TextField控件顯示被編輯或添加的數(shù)據(jù),以及只是為了查閱而顯示的值。ItemTemplate使用CSS格式化表格,而InsertTemplate則使用HTML樣式進(jìn)行格式化,到底使用哪種方法由開(kāi)發(fā)者決定。
注:ASP.NET用Button控件添加、編輯、刪除和保存記錄。
在Button控件中,New的CommandName值將記錄轉(zhuǎn)換為插入模式并加載InsertItemTemplate模板,它允許用戶輸入一個(gè)新記錄值。你可以用Edit的CommandName值給ItemTemplate增加一個(gè)新按鈕,使FormView控件進(jìn)入編輯模式。
可以給ItemTemplate模板增加一個(gè)帶Delete的CommnadName值的按鈕,允許用戶從數(shù)據(jù)源中刪除當(dāng)前記錄。Update的CommnadName保存數(shù)據(jù),而Cancel終止操作。
開(kāi)發(fā)者控制
ASP.NET 2.0的FormView控件令人驚喜。FormView對(duì)DetailsView的簡(jiǎn)單功能進(jìn)行了擴(kuò)張,允許你根據(jù)需要輕松控制要格式化的顯示內(nèi)容。這個(gè)新控件為你交付解決方案提供另一個(gè)選項(xiàng)。
- <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>
 
【編輯推薦】















 
 
 
 
 
 
 