建立 FormView Web 伺服器控制項的範本
更新:2007 年 11 月
您可以加入允許使用者檢視或修改控制項所顯示資料的範本 (Template),以自訂 FormView 控制項。每個範本的內容是由標記、具有資料繫結 (Data Binding) 運算式的控制項,以及變更 FormView 控制項模式的命令按鈕所組成。
注意事項: |
---|
如需資料繫結 (Data Binding) 運算式的詳細資訊,請參閱資料繫結運算式概觀。 |
顯示範本
FormView 控制項的主要顯示範本是 ItemTemplate 範本。ItemTemplate 範本會以唯讀模式顯示繫結的資料。ItemTemplate 包含的控制項是僅顯示資料的控制項,例如 Label 控制項。範本也可包含命令按鈕,可變更 FormView 控制項的模式以插入或編輯,或刪除目前的資料錄。使用包括 Eval 方法以進行單向資料繫結 (Data Binding) 的資料繫結運算式,將範本中的控制項繫結至資料,如下例所示。
<asp:FormView ID="FormView1"
DataSourceID="SqlDataSource1"
DataKeyNames="ProductID"
RunAt="server">
<ItemTemplate>
<table>
<tr><td align="right"><b>Product ID:</b></td> <td><%# Eval("ProductID") %></td></tr>
<tr><td align="right"><b>Product Name:</b></td> <td><%# Eval("ProductName") %></td></tr>
<tr><td align="right"><b>Category ID:</b></td> <td><%# Eval("CategoryID") %></td></tr>
<tr><td align="right"><b>Quantity Per Unit:</b></td><td><%# Eval("QuantityPerUnit") %></td></tr>
<tr><td align="right"><b>Unit Price:</b></td> <td><%# Eval("UnitPrice") %></td></tr>
</table>
</ItemTemplate>
</asp:FormView>
<asp:FormView ID="FormView1"
DataSourceID="SqlDataSource1"
DataKeyNames="ProductID"
RunAt="server">
<ItemTemplate>
<table>
<tr><td align="right"><b>Product ID:</b></td> <td><%# Eval("ProductID") %></td></tr>
<tr><td align="right"><b>Product Name:</b></td> <td><%# Eval("ProductName") %></td></tr>
<tr><td align="right"><b>Category ID:</b></td> <td><%# Eval("CategoryID") %></td></tr>
<tr><td align="right"><b>Quantity Per Unit:</b></td><td><%# Eval("QuantityPerUnit") %></td></tr>
<tr><td align="right"><b>Unit Price:</b></td> <td><%# Eval("UnitPrice") %></td></tr>
</table>
</ItemTemplate>
</asp:FormView>
ItemTemplate 範本可以包括 LinkButton 控制項,這些控制項會根據 CommandName 值變更 FormView 控制項的模式。CommandName 值為 New 會將資料錄放入插入模式並載入 InsertItemTemplate 範本,如此可讓使用者輸入新資料錄的值。您可以將 CommandName 值為 Edit 的按鈕加入至 ItemTemplate 範本,以將 FormView 控制項放入編輯模式。可將 CommandName 值為 Delete 的按鈕加入至 ItemTemplate 範本,讓使用者可以從資料來源刪除目前的資料錄。
其他可以和 FormView 控制項搭配使用的顯示範本為 EmptyDataTemplate 範本,這個範本會在沒有要繫結至的目前資料錄時顯示;以及 HeaderTemplate 範本和 FooterTemplate 範本,這些範本個別會定義頁首和頁尾 (Footer) 的內容。
編輯和插入範本
您可以使用 EditItemTemplate 範本讓使用者修改現有的資料錄,以及使用 InsertItemTemplate 範本,對要插入至資料來源的新資料錄收集值。在 EditItemTemplate 和 InsertItemTemplate 範本中,您通常會包括接收使用者輸入的控制項,例如 TextBox、CheckBox 或 DropDownList 控制項。您也可以加入控制項以顯示唯讀資料,並加入命令按鈕以讓使用者編輯目前的資料錄、插入新資料錄或取消目前的動作。使用包括 Bind 方法以進行雙向資料繫結 (Data Binding) 的資料繫結運算式,將 EditItemTemplate 和 InsertItemTemplate 範本中的控制項繫結至資料,如下例所示。
<asp:sqlDataSource ID="EmployeeDetailsSqlDataSource"
SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees WHERE EmployeeID = @EmpID"
InsertCommand="INSERT INTO Employees(LastName, FirstName) VALUES (@LastName, @FirstName);
SELECT @EmpID = SCOPE_IDENTITY()"
UpdateCommand="UPDATE Employees SET LastName=@LastName, FirstName=@FirstName
WHERE EmployeeID=@EmployeeID"
DeleteCommand="DELETE Employees WHERE EmployeeID=@EmployeeID"
ConnectionString="<%$ ConnectionStrings:NorthwindConnection %>"
OnInserted="EmployeeDetailsSqlDataSource_OnInserted"
RunAt="server">
<SelectParameters>
<asp:Parameter Name="EmpID" Type="Int32" DefaultValue="0" />
</SelectParameters>
<InsertParameters>
<asp:Parameter Name="EmpID" Direction="Output" Type="Int32" DefaultValue="0" />
</InsertParameters>
</asp:sqlDataSource>
<asp:sqlDataSource ID="EmployeeDetailsSqlDataSource"
SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees WHERE EmployeeID = @EmpID"
InsertCommand="INSERT INTO Employees(LastName, FirstName) VALUES (@LastName, @FirstName);
SELECT @EmpID = SCOPE_IDENTITY()"
UpdateCommand="UPDATE Employees SET LastName=@LastName, FirstName=@FirstName
WHERE EmployeeID=@EmployeeID"
DeleteCommand="DELETE Employees WHERE EmployeeID=@EmployeeID"
ConnectionString="<%$ ConnectionStrings:NorthwindConnection %>"
OnInserted="EmployeeDetailsSqlDataSource_OnInserted"
RunAt="server">
<SelectParameters>
<asp:Parameter Name="EmpID" Type="Int32" DefaultValue="0" />
</SelectParameters>
<InsertParameters>
<asp:Parameter Name="EmpID" Direction="Output" Type="Int32" DefaultValue="0" />
</InsertParameters>
</asp:sqlDataSource>
注意事項: |
---|
使用 ListControl 控制項 (例如 DropDownList 控制項) 時,您可能要將 DropDownList 控制項的值繫結至目前繫結資料錄中的欄位,而 DropDownList 控制項的清單值是繫結至個別的可能值清單。在該情況中,使用 Bind 運算式將 DropDownList 控制項的 SelectedValue 屬性繫結至目前繫結的資料錄,並將 DropDownList 控制項的資料來源、DataTextField 屬性和 DataValueField 屬性指定至可能值的清單。 |
使用者按一下 CommandName 值為 Edit 的命令按鈕時,將載入 EditItemTemplate 範本。您可以加入 CommandName 為 Update 的 LinkButton 命令按鈕,以取得目前繫結的值並將這些值傳送至資料來源控制項以進行更新。您可以加入 CommandName 為 Cancel 的 LinkButton 命令按鈕,以捨棄目前繫結的值並將 FormView 控制項傳回至唯讀模式,然後載入 ItemTemplate 範本。
使用者按一下 CommandName 為 New 的命令按鈕時,將載入 InsertItemTemplate 範本。您可以加入 CommandName 為 Insert 的 LinkButton 命令按鈕,以將新資料錄的值傳送至資料來源控制項。您可以加入 CommandName 為 Cancel 的 LinkButton 命令按鈕,以捨棄新值並將 FormView 傳回至唯讀模式,然後載入 ItemTemplate 範本。
如需使用 FormView 控制項編輯資料的範例,請參閱使用 FormView Web 伺服器控制項修改資料。
資料分頁範本
在 FormView 控制項中,一頁的資料是單一的繫結資料錄。如果您設定 FormView 控制項的 AllowPaging 屬性為 true,則 FormView 控制項會自動加入分頁的使用者介面 (UI) 控制項。您可以加入 PagerTemplate 範本,即可自訂分頁的 UI。如需詳細資訊,請參閱在 FormView Web 伺服器控制項置入分頁。
如需 FormView 控制項之 PagerTemplate 範本的範例,請參閱在 FormView Web 伺服器控制項置入分頁。