Создание шаблонов для серверного веб-элемента управления FormView
Обновлен: Ноябрь 2007
К элементу управления FormView можно добавить шаблоны, позволяющие пользователю просматривать и изменять данные, отображаемые элементом управления. Содержимое каждого шаблона состоит из разметки, элементов управления с выражениями привязки данных и кнопки, изменяющие режим элемента управления FormView.
Примечание. |
---|
Дополнительные сведения о выражениях привязки данных см. в разделе Общие сведения о выражениях для привязки данных. |
Отображение шаблонов
Основным шаблоном отображения для элемента управления FormView является шаблон ItemTemplate. Шаблон ItemTemplate отображает связанные данные в режиме только для чтения. Свойство ItemTemplate содержит элементы управления, которые отображают только данные, например, Label. Шаблон также может содержать кнопки для изменения режима вставки или замены элемента управления FormView, а также для удаления текущей записи. При привязке элемента управления в шаблоне к данным используются выражения привязки данных, которые содержат метод Eval, обеспечивающий одностороннюю привязку данных, как показано в следующем примере.
<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, которые изменяют режим элемента управления FormView на основе значения CommandName. Свойство CommandName, имеющее значение New, переводит запись в режим вставки и загружает шаблон InsertItemTemplate, который позволяет пользователю вводить значения для новой записи. Можно добавить кнопку со свойством CommandName, имеющим значение Edit, чтобы шаблон ItemTemplate перевел FormView в режим редактирования. Кнопки со свойством CommandName, имеющим значение Delete, можно добавить к шаблону ItemTemplate, чтобы позволить пользователю удалить текущую запись из источника данных.
Другие шаблоны отображения, которые можно использовать с элементом управления FormView — это шаблон EmptyDataTemplate, который отображается при отсутствии текущей записи для привязки, и шаблоны HeaderTemplate и FooterTemplate, которые определяют содержимое заголовка и примечания соответственно.
Редактирование и вставка шаблонов
Для предоставления пользователю возможности редактирования существующей записи можно использовать шаблон EditItemTemplate и шаблон InsertItemTemplate для сбора значений для новой записи, добавляемой в источник данных. Шаблоны EditItemTemplate и InsertItemTemplate обычно содержат элементы, которые принимают данные от пользователя, например, TextBox, CheckBox и DropDownList. Кроме того, можно добавлять элементы управления для отображения данных только для чтения, или кнопки, позволяющие пользователям изменять текущую запись, вставлять новую или отменять текущее действие. При привязке элемента управления к данным в шаблонах EditItemTemplate и InsertItemTemplate используются выражения привязки данных, которые содержат метод Bind для двусторонней привязки данных, как показано в следующем примере.
<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 для привязки свойства SelectedValue элемента управления DropDownList к текущей присоединенной записи и указывать источник данных, свойства DataTextField и DataValueField элемента DropDownList в списке возможных значений. |
Шаблон EditItemTemplate загружается при нажатии пользователем кнопки CommandName со значением Edit. Для сбора текущих присоединенных значений и отправки их к элементу управления источника данных для обновления необходимо добавить кнопку LinkButton со значением свойства CommandName равным Update. Для отмены текущих привязанных значений и для возвращения элемента управления FormView в режим только для чтения и загрузки шаблона ItemTemplate необходимо добавить кнопку LinkButton со значением свойства CommandName равным Cancel.
Шаблон InsertItemTemplate загружается при нажатии пользователем кнопки со значением CommandName равным New. Для отправки значений для новой записи в элемент управления источником данных необходимо добавить кнопку LinkButton со значением CommandName равным Insert. Можно добавить кнопку LinkButton со значением CommandName равным Cancel, чтобы отменить новые значения и вернуть элемент управления FormView в режим только для чтения и загрузить шаблон ItemTemplate.
Пример использования элемента управления FormView для изменения данных см. в разделе Изменение данных с помощью серверного веб-элемента управления FormView.
Шаблон постраничного просмотра данных
В элементе управления FormView страница данных является одной присоединенной записью. Если свойство AllowPaging элемента управления FormView имеет значение true, то FormView будет автоматически добавлять элементы управления пользовательского интерфейса (UI) для разбиения по страницам. Пользовательский интерфейс для разбиения по страницам можно настроить путем добавления шаблона PagerTemplate. Дополнительные сведения см. в разделе Разбиение по страницам в серверном в веб-элементе управления FormView.
Пример шаблона PagerTemplate для элемента управления FormView см. в разделе Разбиение по страницам в серверном в веб-элементе управления FormView.