Создание пользовательского столбца в серверном веб-элементе управления GridView
Обновлен: Ноябрь 2007
Элемент управления GridView может автоматически создавать столбцы из полей, предоставляемых источником данных. Кроме того, вместо автоматического создания столбцов можно самостоятельно создавать коллекцию столбцов для отображения. Однако может встретиться ситуация, в которой будет необходимо настроить отображение отдельного столбца. В таком случае можно создать TemplateField для задания структуры пользовательского столбца.
Создание шаблонов
Объект TemplateField разрешает задавать шаблоны, содержащие разметку и элементы управления для настройки структуры и поведения столбца в элементе управления GridView. С помощью шаблона ItemTemplate можно указать структуру, которая должна использоваться, когда GridView отображает данные в столбце. Чтобы задать настраиваемую структуру для редактирования данных в столбце пользователями, можно создать EditItemTemplate.
Шаблон может содержать разметку, серверные веб-элементы управления и кнопки команд. Дополнительные сведения о шаблонах см. в разделе Шаблоны серверных веб-элементов управления ASP.NET.
Привязка данных в шаблоне
В шаблоне можно привязать элементы управления к данным с помощью методов Eval и Bind. Метод Eval используется, когда элемент управления будет только отображать значения. Метод Bind используется, когда пользователи могут изменять значения данных, т. е. для сценариев обновления данных. Можно использовать метод Eval в любом из шаблонов для отображения данных. Метод Bind используется в шаблоне с элементами управления, в которых пользователи могут изменять значения, например в элементах управления TextBox и CheckBox, или в шаблоне, позволяющем удаление записи. Дополнительные сведения см. в разделе Общие сведения о выражениях для привязки данных.
Пример
В следующем примере показана коллекция Columns элемента управления GridView. Эта коллекция содержит объект TemplateField, который в свою очередь содержит объект ItemTemplate. Для отображения даты в объект ItemTemplate включен элемент управления Label, использующий метод Eval. Для редактирования даты остальные шаблоны используют элемент управления Calendar, который в свою очередь использует метод Bind.
<Columns>
<asp:BoundField DataField="EmployeeID" HeaderText="Employee ID" ReadOnly="true"/>
<asp:BoundField DataField="FirstName" HeaderText="First Name"/>
<asp:BoundField DataField="LastName" HeaderText="Last Name"/>
<asp:TemplateField HeaderText="Birth Date">
<ItemTemplate>
<asp:Label ID="BirthDateLabel" Runat="Server"
Text='<%# Eval("BirthDate", "{0:d}") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:Calendar ID="EditBirthDateCalendar" Runat="Server"
VisibleDate='<%# Eval("BirthDate") %>'
SelectedDate='<%# Bind("BirthDate") %>' />
</EditItemTemplate>
</asp:TemplateField>
<asp:HyperLinkField Text="Show Detail"
DatahrefFormatString="~/ShowEmployeeDetail.aspx?EmployeeID={0}"
DatahrefFields="EmployeeID" />
</Columns>
<Columns>
<asp:BoundField DataField="EmployeeID" HeaderText="Employee ID" ReadOnly="true"/>
<asp:BoundField DataField="FirstName" HeaderText="First Name"/>
<asp:BoundField DataField="LastName" HeaderText="Last Name"/>
<asp:TemplateField HeaderText="Birth Date">
<ItemTemplate>
<asp:Label ID="BirthDateLabel" Runat="Server"
Text='<%# Eval("BirthDate", "{0:d}") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:Calendar ID="EditBirthDateCalendar" Runat="Server"
VisibleDate='<%# Eval("BirthDate") %>'
SelectedDate='<%# Bind("BirthDate") %>' />
</EditItemTemplate>
</asp:TemplateField>
<asp:HyperLinkField Text="Show Detail"
DatahrefFormatString="~/ShowEmployeeDetail.aspx?EmployeeID={0}"
DatahrefFields="EmployeeID" />
</Columns>
См. также
Основные понятия
Общие сведения о серверных веб-элементах управления ASP.NET с привязкой к данным
Общие сведения об элементах управления источниками данных