Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Для обеспечения гибкости GridView предоставляет TemplateField, который отрисовывается, используя шаблон. Шаблон может включать сочетание статических HTML, веб-элементов управления и синтаксиса привязки данных. В этом руководстве мы рассмотрим, как использовать TemplateField для достижения большей степени настройки с помощью элемента управления GridView.
Введение
GridView состоит из набора полей, указывающих, что свойства из DataSource
должны быть включены в конечный выходной результат, а также способ, которым будут отображаться данные. Самый простой тип поля — BoundField, который отображает значение данных в виде текста. Другие типы полей отображают данные с помощью альтернативных ЭЛЕМЕНТОВ HTML. CheckBoxField, например, отображается как флажок, состояние которого зависит от значения указанного поля данных; ImageField отображает изображение, источник изображения которого основан на указанном поле данных. Гиперссылки и кнопки, состояние которых зависит от базового значения поля данных, можно отобразить с помощью типов полей HyperLinkField и ButtonField.
Хотя типы полей CheckBoxField, ImageField, HyperLinkField и ButtonField позволяют альтернативному представлению данных, они по-прежнему довольно ограничены в отношении форматирования. CheckBoxField может отображать только один флажок, в то время как ImageField может отображать только одно изображение. Что делать, если определенное поле должно отображать текст, флажок и изображение на основе разных значений полей данных? Или если бы мы хотели отобразить данные с помощью веб-элемента управления, отличного от checkBox, Image, HyperLink или Button? Кроме того, BoundField ограничивает его отображение одним полем данных. Что делать, если нужно отобразить два или более значений поля данных в одном столбце GridView?
GridView предлагает TemplateField для достижения требуемого уровня гибкости, который визуализируется с помощью шаблона. Шаблон может включать сочетание статических HTML, веб-элементов управления и синтаксиса привязки данных. Кроме того, в TemplateField есть множество шаблонов, которые можно использовать для настройки отрисовки для различных ситуаций. Например, ItemTemplate
используется по умолчанию для отрисовки ячейки каждой строки, однако шаблон EditItemTemplate
можно использовать для настройки интерфейса при редактировании данных.
В этом руководстве мы рассмотрим, как использовать TemplateField для достижения большей степени настройки с помощью элемента управления GridView. В предыдущем руководстве мы узнали, как настроить форматирование на основе базовых данных с помощью DataBound
и RowDataBound
обработчиков событий. Другим способом настройки форматирования на основе базовых данных является вызов методов форматирования из шаблона. Мы рассмотрим этот метод в этом руководстве.
В этом руководстве мы будем использовать TemplateFields для настройки внешнего вида списка сотрудников. В частности, мы перечислим всех сотрудников, но отобразим первые и фамилии сотрудника в одном столбце, дату найма в элементе управления "Календарь" и столбец состояния, указывающий, сколько дней они работали в компании.
Рис. 1. Три templateFields используются для настройки отображения (щелкните, чтобы просмотреть изображение полного размера)
Шаг 1. Привязка данных к GridView
В сценариях создания отчетов, где необходимо использовать TemplateFields для настройки внешнего вида, проще всего начать с создания элемента управления GridView, содержащего только BoundFields, а затем добавить новые templateFields или преобразовать существующие BoundFields в TemplateFields по мере необходимости. Давайте начнем этот курс, добавив GridView на страницу через Designer и привязав его к ObjectDataSource, который возвращает список сотрудников. Эти шаги создадут GridView с BoundFields (связанными полями) для каждого из полей сотрудника.
Откройте страницу GridViewTemplateField.aspx
и перетащите элемент GridView из панели элементов на конструктор. В меню смарт-тега GridView выберите пункт "Добавить новый элемент управления ObjectDataSource", который вызывает метод класса EmployeesBLL
GetEmployees()
.
Рис. 2. Добавление нового элемента управления ObjectDataSource, вызывающего GetEmployees()
метод (щелкните, чтобы просмотреть изображение полного размера)
Привязка GridView таким образом автоматически добавит BoundField для каждого свойства сотрудника: EmployeeID
, LastName
, FirstName
, Title
, HireDate
, ReportsTo
и Country
. Для этого отчета не будем утруждать себя отображением свойств EmployeeID
, ReportsTo
или Country
. Чтобы удалить эти boundFields, можно:
- Щелкните на ссылке "Изменить столбцы" в смарт-теге GridView, чтобы открыть диалоговое окно "Поля". Затем выберите BoundFields в левом нижнем списке и нажмите красную кнопку X, чтобы удалить BoundField.
- Измените декларативный синтаксис GridView вручную из представления "Исходный код", удалите элемент
<asp:BoundField>
для BoundField, который вы хотите удалить.
После того, как вы удалите EmployeeID
, ReportsTo
, и Country
BoundFields, разметка вашего GridView должна выглядеть следующим образом:
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False" DataKeyNames="EmployeeID"
DataSourceID="ObjectDataSource1">
<Columns>
<asp:BoundField DataField="LastName" HeaderText="LastName"
SortExpression="LastName" />
<asp:BoundField DataField="FirstName" HeaderText="FirstName"
SortExpression="FirstName" />
<asp:BoundField DataField="Title" HeaderText="Title"
SortExpression="Title" />
<asp:BoundField DataField="HireDate" HeaderText="HireDate"
SortExpression="HireDate" />
</Columns>
</asp:GridView>
Ознакомьтесь с нашим прогрессом в браузере. На этом этапе вы увидите таблицу с записью для каждого сотрудника с четырьмя столбцами: один для фамилии сотрудника, один для имени сотрудника, один для должности и один для даты найма.
Рис. 3.: LastName
поля, FirstName
поля, Title
поля и HireDate
поля отображаются для каждого сотрудника (нажмите, чтобы просмотреть изображение в полном размере)
Шаг 2: Отображение имён и фамилий в одном столбце
В настоящее время имена и фамилии каждого сотрудника отображаются в отдельном столбце. Было бы лучше объединить их в один столбец. Для этого необходимо использовать TemplateField. Мы можем либо добавить новый TemplateField, вставить в него необходимую разметку и синтаксис привязки данных, а затем удалить BoundFields FirstName
и LastName
, либо преобразовать BoundField FirstName
в TemplateField, изменить TemplateField, чтобы включить значение LastName
, а затем удалить BoundField LastName
.
Оба подхода дают тот же самый результат, но лично мне нравится преобразовывать BoundFields в TemplateFields, когда это возможно, так как преобразование автоматически добавляет ItemTemplate
, EditItemTemplate
, а также веб-элементы управления с синтаксисом привязки данных, чтобы имитировать внешний вид и функциональность BoundField. Преимущество заключается в том, что нам потребуется меньше работать с TemplateField, так как процесс преобразования будет выполнять некоторые действия для нас.
Чтобы преобразовать существующий BoundField в TemplateField, щелкните ссылку "Изменить столбцы" из смарт-тега GridView, открыв диалоговое окно "Поля". Выберите BoundField для преобразования из списка в левом нижнем углу и щелкните ссылку "Преобразовать это поле в ШаблонФилд" в правом нижнем углу.
Рис. 4. Преобразование BoundField в templateField из диалогового окна "Поля" (щелкните, чтобы просмотреть изображение полного размера)
Перейдите вперед и преобразуйте FirstName
BoundField в TemplateField. После этого изменения в конструкторе нет ощутимых различий. Это связано с тем, что преобразование BoundField в TemplateField создает TemplateField, который сохраняет внешний вид и функциональность BoundField. Несмотря на отсутствие визуального различия на этом этапе в конструкторе, этот процесс преобразования заменил декларативный синтаксис BoundField — <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" />
следующим синтаксисом TemplateField:
<asp:TemplateField HeaderText="FirstName" SortExpression="FirstName">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"
Text='<%# Bind("FirstName") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server"
Text='<%# Bind("FirstName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
Как видно, TemplateField состоит из двух шаблонов ItemTemplate
, у которых есть метка, свойство которой Text
задано значение FirstName
поля данных, и EditItemTemplate
элемент управления TextBox, свойство которого Text
также задано для FirstName
поля данных. Синтаксис привязки данных — <%# Bind("fieldName") %>
указывает, что поле fieldName
данных привязано к указанному свойству веб-элемента управления.
Чтобы добавить значение поля данных LastName
в этот TemplateField, необходимо добавить другой веб-контрол Label в ItemTemplate
и привязать его свойство Text
к LastName
. Это можно сделать вручную или с помощью дизайнера. Чтобы сделать это вручную, просто добавьте соответствующий декларативный синтаксис в ItemTemplate
:
<asp:TemplateField HeaderText="FirstName" SortExpression="FirstName">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"
Text='<%# Bind("FirstName") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server"
Text='<%# Bind("FirstName") %>'></asp:Label>
<asp:Label ID="Label2" runat="server"
Text='<%# Bind("LastName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
Чтобы добавить его через конструктор, щелкните ссылку "Изменить шаблоны" из смарт-тега GridView. Откроется интерфейс редактирования шаблона GridView. В смарт-теге этого интерфейса представлен список шаблонов в GridView. Так как на этом этапе у нас есть только один шаблон TemplateField, единственными шаблонами, перечисленными в раскрывающемся списке, являются эти шаблоны для FirstName
TemplateField вместе с EmptyDataTemplate
и PagerTemplate
. Шаблон EmptyDataTemplate
, если он указан, используется для отрисовки выходных данных GridView, если нет результатов, привязанных к GridView; PagerTemplate
при указании используется для отрисовки интерфейса разбиения страниц для GridView, поддерживающего разбиение по страницам.
Рис. 5. Шаблоны GridView можно изменить с помощью конструктора (щелкните, чтобы просмотреть изображение полного размера)
Чтобы также отобразить LastName
в FirstName
TemplateField, перетащите Label из панели инструментов в FirstName
TemplateField ItemTemplate
в интерфейсе редактирования шаблона GridView.
Рис. 6. Добавьте элемент управления Web с меткой в FirstName
ItemTemplate TemplateField (щелкните для просмотра изображения в полном размере)
На этом этапе веб-элемент управления Label, добавленный в TemplateField, имеет значение Text
"Label". Необходимо изменить это, чтобы это свойство было привязано к значению LastName
поля данных. Для этого щелкните смарт-тег элемента управления Label и выберите опцию "Редактировать привязки данных".
Рис. 7. Выберите параметр "Изменить DataBindings" из смарт-тега метки (щелкните, чтобы просмотреть изображение полного размера)
Откроется диалоговое окно DataBindings. Здесь можно выбрать свойство для участия в привязке данных из списка слева и выбрать поле для привязки данных из раскрывающегося списка справа. Выберите Text
свойство слева и LastName
поле справа, затем нажмите кнопку "ОК".
Рис. 8. Привязка Text
свойства к LastName
полю данных (щелкните, чтобы просмотреть изображение полного размера)
Замечание
Диалоговое окно DataBindings позволяет указать, следует ли выполнять двустороннее связывание данных. Если этот флажок не установлен, будет использоваться синтаксис привязки данных <%# Eval("LastName")%>
, вместо <%# Bind("LastName")%>
. Любой подход подходит для этого руководства. Двусторонняя привязка данных становится важной при вставке и редактировании данных. Однако для простого отображения данных любой подход будет работать одинаково хорошо. Подробно рассмотрим двустороннее связывание данных в будущих руководствах.
Просмотрите эту страницу через браузер. Как вы можете видеть, GridView по-прежнему включает четыре столбца; однако столбец FirstName
теперь отображает как FirstName
, так и LastName
значения полей данных.
Рис. 9. И FirstName
LastName
значения отображаются в одном столбце (щелкните, чтобы просмотреть изображение полного размера)
Чтобы завершить этот первый шаг, удалите LastName
BoundField и переименуйте свойство FirstName
HeaderText
TemplateField в "Name". После этих изменений декларативная разметка GridView должна выглядеть следующим образом:
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False" DataKeyNames="EmployeeID"
DataSourceID="ObjectDataSource1">
<Columns>
<asp:TemplateField HeaderText="Name" SortExpression="FirstName">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"
Text='<%# Bind("FirstName") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server"
Text='<%# Bind("FirstName") %>'></asp:Label>
<asp:Label ID="Label2" runat="server"
Text='<%# Eval("LastName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Title" HeaderText="Title"
SortExpression="Title" />
<asp:BoundField DataField="HireDate" HeaderText="HireDate"
SortExpression="HireDate" />
</Columns>
</asp:GridView>
Рис. 10. Первые и фамилии каждого сотрудника отображаются в одном столбце (щелкните, чтобы просмотреть изображение полного размера)
Шаг 3. Использование элемента управления "Календарь" для отображенияHiredDate
поля
Отображение значения поля данных в виде текста в GridView так же просто, как и при использовании BoundField. Однако для некоторых сценариев данные лучше всего выразить с помощью определенного веб-элемента управления вместо простого текста. Такая настройка отображения данных возможна с помощью TemplateFields. Например, вместо отображения даты найма сотрудника в виде текста можно отобразить календарь (с помощью элемента управления "Календарь") с выделенной датой найма.
Для этого начните с преобразования HiredDate
BoundField в TemplateField. Просто перейдите к смарт-тегу GridView и щелкните ссылку "Изменить столбцы", открыв диалоговое окно "Поля".
HiredDate
Выберите BoundField и нажмите кнопку "Преобразовать это поле в TemplateField".
Рис. 11. Преобразование HiredDate
BoundField в templateField (щелкните, чтобы просмотреть изображение полного размера)
Как мы видели на шаге 2, это заменит BoundField на TemplateField, который содержит ItemTemplate
и EditItemTemplate
, с меткой и TextBox, свойства которого Text
связаны с HiredDate
значением с помощью синтаксиса привязки данных <%# Bind("HiredDate")%>
.
Чтобы заменить текст элементом управления Calendar, измените шаблон, удалив метку и добавив элемент управления Calendar. В конструкторе выберите пункт "Изменить шаблоны" в смарт-теге GridView и выберите HireDate
поле шаблона ItemTemplate
в раскрывающемся списке. Затем удалите элемент управления Label и перетащите элемент управления Calendar из панели элементов в интерфейс редактирования шаблона.
Рис. 12. Добавление элемента управления календаря в HireDate
шаблонФилд ItemTemplate
(щелкните, чтобы просмотреть изображение полного размера)
На этом этапе в каждой строке GridView будет находиться элемент управления Calendar в поле HiredDate
TemplateField. Однако фактическое HiredDate
значение сотрудника не задано нигде в элементе управления "Календарь", что приводит к тому, что каждый элемент управления "Календарь" по умолчанию отображает текущий месяц и дату. Чтобы устранить эту проблему, необходимо назначить каждому сотруднику HiredDate
свойства SelectedDate и VisibleDate элемента управления Calendar.
В смарт-теге элемента управления «Календарь» выберите «Редактировать привязки данных» (DataBindings). Затем привяжите оба свойства SelectedDate
и VisibleDate
к полю данных HiredDate
.
Рис. 13. Привязка SelectedDate
свойств к VisibleDate
HiredDate
полю данных (щелкните, чтобы просмотреть изображение полного размера)
Замечание
Выбранная дата элемента управления "Календарь" не обязательно должна быть видимой. Например, календарь можетиметь 1 августа 1999 года в качестве выбранной даты, но показывать текущий месяц и год. Выбранная дата и видимая дата задаются свойствами SelectedDate
и VisibleDate
элемента управления "Календарь". Поскольку мы хотим выделить свойство HiredDate
сотрудника и убедиться, что оно отображается, необходимо связать оба эти свойства с полем данных HireDate
.
При просмотре страницы в браузере календарь теперь отображает месяц даты найма сотрудника и выбирает эту дату.
Рис. 14. Сотрудник HiredDate
отображается в элементе управления "Календарь" (щелкните, чтобы просмотреть изображение полного размера)
Замечание
Вопреки всем примерам, которые мы видели до сих пор, в этом руководстве мы не задали EnableViewState
свойство false
для этого GridView. Причина этого решения заключается в том, что нажатие даты элемента управления "Календарь" приводит к обратной отправке, задание выбранной даты календаря на дату, которую только что щелкнули. Если состояние представления GridView отключено, однако при каждой обратной обратной отправке данные GridView возвращаются к базовому источнику данных, что приводит к тому , что выбранная дата календаря будет возвращена сотруднику HireDate
, перезаписав дату, выбранную пользователем.
В этом руководстве данное обсуждение бессмысленно, так как пользователь не может обновить сотрудника HireDate
. Скорее всего, лучше настроить элемент управления "Календарь", чтобы ее даты не были выбраны. Независимо от этого, в этом руководстве показано, что в некоторых обстоятельствах состояние представления должно быть включено для предоставления определенных функциональных возможностей.
Шаг 4. Отображение количества дней, которые сотрудник работал в компании
До сих пор мы видели два приложения TemplateFields:
- Объединение двух или нескольких значений поля данных в один столбец и
- Выражение значения поля данных с помощью веб-элемента управления вместо текста
Третье использование TemplateFields заключается в отображении метаданных о базовых данных GridView. Помимо отображения дат найма сотрудников, например, может потребоваться столбец, в котором отображается общее количество дней, которые они были на работе.
Тем не менее, еще одно использование TemplateFields возникает в сценариях, когда базовые данные должны отображаться по-разному в отчете веб-страницы, чем в формате, который он хранится в базе данных. Представьте, что в таблице Employees
есть поле Gender
, которое хранит символ M
или F
, чтобы указать пол сотрудника. При отображении этих сведений на веб-странице может потребоваться показать пол как "Мужчина" или "Женщина", а не только "M" или "F".
Оба этих сценария можно обрабатывать путем создания метода форматирования в классе кода ASP.NET страницы (или в отдельной библиотеке классов, реализованной как static
метод), который вызывается из шаблона. Такой метод форматирования вызывается из шаблона с использованием того же синтаксиса привязки данных, который виделся ранее. Метод форматирования может принимать любое количество параметров, но должен возвращать строку. Эта возвращаемая строка — это HTML-код, внедренный в шаблон.
Чтобы проиллюстрировать эту концепцию, давайте добавим наш учебник, чтобы показать столбец, который содержит общее количество дней, которые сотрудник был на работе. Этот метод форматирования принимает объект Northwind.EmployeesRow
и возвращает количество дней, в течение которых сотрудник был на работе, в виде строки. Этот метод можно добавить в класс кодовой части страницы ASP.NET, но должен быть помечен как protected
или public
в целях доступа к шаблону.
protected string DisplayDaysOnJob(Northwind.EmployeesRow employee)
{
// Make sure HiredDate is not null... if so, return "Unknown"
if (employee.IsHireDateNull())
return "Unknown";
else
{
// Returns the number of days between the current
// date/time and HireDate
TimeSpan ts = DateTime.Now.Subtract(employee.HireDate);
return ts.Days.ToString("#,##0");
}
}
HiredDate
Поскольку поле может содержать NULL
значения базы данных, необходимо сначала убедиться, что значение не NULL
, прежде чем продолжить вычисление.
HiredDate
Если значение равноNULL
, мы просто возвращаем строку "Неизвестно", если это не NULL
так, вычисляем разницу между текущим временем и HiredDate
значением и возвращаем количество дней.
Чтобы использовать этот метод, необходимо вызвать его из TemplateField в GridView с помощью синтаксиса привязки данных. Начните с добавления нового TemplateField в GridView, щелкнув ссылку "Изменить столбцы" в смарт-теге GridView и добавив новый TemplateField.
Рис. 15. Добавление нового шаблона в GridView (щелкните, чтобы просмотреть изображение полного размера)
Задайте для этого нового элемента TemplateField свойству HeaderText
значение "Days on the Job" и установите свойство ItemStyle
для HorizontalAlign
как Center
. Чтобы вызвать DisplayDaysOnJob
метод из шаблона, добавьте ItemTemplate
и используйте следующий синтаксис привязки данных:
<%# DisplayDaysOnJob((Northwind.EmployeesRow)
((System.Data.DataRowView) Container.DataItem).Row) %>
Container.DataItem
возвращает DataRowView
объект, соответствующий записи DataSource
, привязанной к GridViewRow
. Его Row
свойство возвращает строго типизированный Northwind.EmployeesRow
, который передается в метод DisplayDaysOnJob
. Этот синтаксис привязки данных может напрямую использоваться в ItemTemplate
(как это показано в синтаксисе декларативных выражений ниже) или может быть назначен свойству Text
элемента управления Label для веб-сайта.
Замечание
Вместо передачи экземпляра EmployeesRow
можно просто передать значение HireDate
, используя <%# DisplayDaysOnJob(Eval("HireDate")) %>
. Однако, метод Eval
возвращает object
значение, поэтому нам придется изменить сигнатуру метода DisplayDaysOnJob
, чтобы принимать входной параметр типа object
. Мы не можем слепо привести вызов Eval("HireDate")
к DateTime
, потому что столбец HireDate
в таблице Employees
может содержать значения NULL
. Поэтому нам нужно принять входной object
параметр для DisplayDaysOnJob
метода, проверить, имеет ли он значение базы данных NULL
(которое можно выполнить с помощью Convert.IsDBNull(objectToCheck)
), а затем продолжить соответствующим образом.
Из-за этих тонкостей я решил пройти весь EmployeesRow
инстанс. В следующем руководстве мы увидим более подходящий пример использования Eval("columnName")
синтаксиса для передачи входного параметра в метод форматирования.
Ниже показан декларативный синтаксис для GridView после добавления TemplateField и вызова метода DisplayDaysOnJob
из ItemTemplate
.
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False" DataKeyNames="EmployeeID"
DataSourceID="ObjectDataSource1">
<Columns>
<asp:TemplateField HeaderText="Name" SortExpression="FirstName">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"
Text='<%# Bind("FirstName") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server"
Text='<%# Bind("FirstName") %>'></asp:Label>
<asp:Label ID="Label2" runat="server"
Text='<%# Eval("LastName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Title" HeaderText="Title"
SortExpression="Title" />
<asp:TemplateField HeaderText="HireDate"
SortExpression="HireDate">
<EditItemTemplate>
<asp:TextBox ID="TextBox2" runat="server"
Text='<%# Bind("HireDate") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Calendar ID="Calendar1" runat="server"
SelectedDate='<%# Bind("HireDate") %>'
VisibleDate='<%# Eval("HireDate") %>'>
</asp:Calendar>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Days On The Job">
<ItemTemplate>
<%# DisplayDaysOnJob((Northwind.EmployeesRow)
((System.Data.DataRowView) Container.DataItem).Row) %>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
</Columns>
</asp:GridView>
На рисунке 16 показан завершенный учебник при просмотре через браузер.
Рис. 16. Количество дней, которые сотрудник был на задании отображается (щелкните, чтобы просмотреть изображение полного размера)
Сводка
ШаблонноеПоле в элементе управления GridView обеспечивает более высокую степень гибкости отображения данных, чем доступно для других полей управления. TemplateFields идеально подходит для ситуаций, когда:
- Несколько полей данных должны отображаться в одном столбце GridView
- Данные лучше всего выражены с помощью веб-элемента управления, а не обычного текста
- Выходные данные зависят от базовых данных, таких как отображение метаданных или переформатирование данных
Помимо настройки отображения данных, TemplateFields также используются для настройки пользовательских интерфейсов, используемых для редактирования и вставки данных, как мы увидим в будущих руководствах.
Следующие два руководства продолжают изучать шаблоны, начиная с просмотра использования TemplateFields в DetailsView. После этого мы перейдем к FormView, который использует шаблоны вместо полей, чтобы обеспечить большую гибкость в макете и структуре данных.
Счастливое программирование!
Сведения о авторе
Скотт Митчелл, автор семи книг ASP/ASP.NET и основатель 4GuysFromRolla.com, работает с технологиями Microsoft Web с 1998 года. Скотт работает независимым консультантом, тренером и писателем. Его последняя книга — Sams Teach Yourself ASP.NET 2.0 за 24 часа. С ним можно связаться по адресу mitchell@4GuysFromRolla.com.
Особое спасибо кому
Эта серия учебников была проверена многими полезными рецензентами. Ведущий рецензент этого руководства — Дэн Джагерс. Хотите просмотреть мои предстоящие статьи MSDN? Если да, напишите мне на mitchell@4GuysFromRolla.com.