Управление DataGrid
Управление DataGrid позволяет создать список богатого формата источника данных. Кроме того, он также поддерживает элементы выбора с другими операциями.
В четырех примерах этого раздела используются таблицы, которые включают информацию о заголовке (заголовок, идентификатор заголовка, автор, цену и дату публикации). Все данные поддерживаются с XML в TitleSdb.xml. При создании страницы для представления содержания этой таблицы и выбора книг эти примеры следуют постепенному методу. Список кода содержит черный текст тела, чтобы указать изменение, сделанное образцом, встроенным в предыдущий пример.
Тест из TitleSdb.xml:
<root>
<схема id = documentElement targetnamespace =
xmlns = http://www.w3.org/1999/xmlschema
xmlns: msdata = urn: схемы-microsoft-com: xml-msdata>
<имя элемента = таблица>
<Complextype content = elementomonly>
<имя элемента = title_id type = string> </element>
<имя элемента = title type = string> </element>
<element name = au_name type = string> </element>
<имя элемента = цена msdata: datatype = system.currency
minoccurs = 0
Type = string> </element>
<name name = pubdate type = timeinstant> </element>
</Speafftype>
<nique name = titleconstraint msdata: primarykey = true>
<Селектор>
<field> title_id </field>
</уникальный>
</Element>
</схема>
<DocumentElement>
<Название>
<title_id> bu1032 </title_id>
<Название> Руководство по базе данных занятого руководителя </title>
<UM_NAME> Марджори Грин </au_name>
<цена> 19,99 </price>
<Pubdate> 1991-06-12T07: 00: 00 </pubdate>
</Title>
Эластичный
</documentElement>
</root>
В типичном веб -приложении, чтобы получить максимальную масштабируемость и производительность, он, вероятно, будет использовать веб -службы или бизнес -объекты для доступа к данным. Чтобы упростить эти примеры и сосредоточиться на использовании DataGrid вместо доступа к данным, мы решили загружать данные за один раз, когда начинается приложение, и в состоянии приложения ASP в Global.asax Show.
Багажник от Global.asax:
public void Application_onstart () {) {)
FileStream fs = null;
Набор данных ds = null;
пытаться {
fs = new FileStream (server.mappath (titlesdb.xml), filemode.open,
FileAccess.read);
DS = новый набор данных ();
// загружать данные в файл XML в набор данных
ds.readxml (fs);
} Окончательно {
if (fs! = null) {
fs.close ();
fs = null;
}
}
// Cchestrate набор данных на высокой скорости к состоянию приложения, чтобы его можно было использовать на одной странице
Приложение [titleSdataset] = ds;
}
DataGrid1
DataGrid1 иллюстрирует основное использование DataGrid, которое объясняет, как элемент управления использует наименьший код пользователя для генерации богатой функции.
ИНЖИР
Вставьте из dataGrid1.aspx:
<%@page language = c# src = dataGrid.cs inherits = samples.datagridpage%>
Эластичный
<ASP: DataGrid Runat = Server Id = titleSgrid>
</asp: datagrid>
Приведенный выше файл .aspx показал оператор без каких -либо атрибутов без каких -либо атрибутов управления DataGrid.
dataGrid.cs:
Образцы пространства имен {
Эластичный
Открытый класс DataGridPage: Page {
Защищенный DataGrid titleSgrid;
Public icollection getTitleslist () {
// Помещайте список заголовков из набора данных с высоким уровнем кеша в состоянии приложения.
DataSet titleSdataset = (DataSet) Приложение [titleSdataset];
if (titleSdataset! = null) {
Return titlesdataset.tables [title] .defaultView;
}
еще {
Вернуть ноль;
}
}
Private void LoadTitLesgrid () {) {)
// поиск данных из базы данных
icollection titleslist = getTitleslist ();
// Установить источник данных управления
titleSgrid.datasource = titleSlist;
// и заставить его использовать этот источник данных для создания своего проекта
itlesgrid.databind ();
}
Защищенный переопределение void everoad (eventargs e) {{
base.onload (e);
if (! iSpostback) {
// Смотрите эту страницу в первый раз
LoadTitLesGrid ();
}
}
}
}
Файл .cs содержит код, используемый для этой страницы. Этот код такой же, как и функция кода, используемая в примере Datalist1. В первом запросе на эту страницу он охватывает онлайн -метод для извлечения данных и установления свойства DataSource управления перед вызовом DataBind. Это заставит DataGrid создать свой проект, которые являются необходимыми строками в таблице. В процессе возврата обработки DataGrid Re -Create проект из статуса (это состояние включает в себя содержимое ячейки, сохраненное в последнем запросе).
Этот пример иллюстрирует функцию свойства AutogenerateColumns управления DataGrid. Значение по умолчанию этого атрибута верно. При установке TRUE, DataGrid будет использовать отражение для проверки его источника и объектов данных и создать столбец для каждого публичного атрибута или поля. В этом примере элемент управления представляет все текущие поля в таблице «заголовок». Эта функция позволяет быстро и легко и легко создать список любого источника данных.
Каждый тип автоматического столбца связан. Этот тип столбца преобразует значение атрибута, связанное с ним в строку, которую необходимо использовать в качестве окна.
DataGrid2
DataGrid2 объясняет набор данных DataGrid в столбцах, установленных в файле .aspx.
Рисунок 5. Примеры, сгенерированные с использованием указанного DataGrid столбца
Выдержка из DataGrid2.aspx:
<%@page language = c# src = dataGrid.cs inherits = samples.datagridpage%>
Эластичный
<ASP: DataGrid Runat = Server ID = titleSgrid
AutogenerateColumns = false>
<poperty name = columns>
<ASP: BoundColumn HeadelText = заголовок DataField = title/>
<ASP: BoundColumn HeadelText = Author DataField = Au_Name/>
<ASP: BoundColumn HeaderText = Дата опубликована DataField = pubdate/>>
<ASP: BoundColumn HeadEltext = цена DataField = цена/>
</Property>
</asp: datagrid>
Этот файл .aspx показал управление DataGrid с столбцом, установленным пользователями. В этом примере используются те же файлы -код -поддержки, что и DataGrid1, потому что код не требуется.
Свойство DataGrid AutogenerAteColumns установлено для подделки, чтобы предотвратить автоматическое генерирование столбцов управления и позволяет пользователям нести ответственность за определение столбцов, которые будут представлены в таблице.
Есть много преимуществ:
Вы можете контролировать порядок столбцов. Список в порядке заявления. С другой стороны, автоматический столбец представлен порядок, полученный изображением.
Вы можете указать заголовок каждого столбца со свойством заголовка столбца. В предыдущем примере заголовок метки указывает имя поля, которое может быть неуместным. При использовании элементов управления в этом режиме Columbns также предлагает другие установленные атрибуты.
Тип автоматического столбца всегда ограничен. Укажите набор столбцов, чтобы пользователь мог управлять типом каждого столбца.
DataGrid3
DataGrid3 построен на DataGrid2, добавляя визуальное форматирование и форматирование.
Рисунок 6. Примеры, сгенерированные DataGrid, который устанавливает атрибуты стиля и формата
Отрывок от DataGrid3.aspx:
<%@page language = c# src = dataGrid.cs inherits = samples.datagridpage%>
Эластичный
<ASP: DataGrid Runat = Server ID = titleSgrid
AutogenerateColumns = false
ширина = 80%
Backcolor = белый
Borderwidth = 1px BordersTyle = твердое ячейки = 2 cell -spacing = 0
Bordercolor = tan
Font-name = Song Style Font-Size = 8pt>
<poperty name = columns>
<ASP: BoundColumn HeadelText = заголовок DataField = title/>
<ASP: BoundColumn HeadelText = Author DataField = Au_Name/>
<ASP: BoundColumn HeaderText = Дата опубликована DataField = pubdate
DataFormatString = {0: mmm yyyy}/>
<ASP: BoundColumn HeadEltext = цена DataField = цена
DataFormatString = {0: C}>
<poperty name = itemstyle>
<Asp: tableitemstyle horizontalign = right/>
</Property>
</asp: bounddcolumn>
</Property>
<poperty name = startyle>
<Asp: tableitemstyle backcolor = Darkred forecolor = белый
font-black = true/>
</Property>
<poperty name = itemstyle>
<ASP: TableItemStyle foreColor = darksLateBlue/>>>
</Property>
<poperty name = changingitemstyle>
<Asp: tableitemstyle backcolor = beige/>>
</Property>
</asp: datagrid>
Этот файл .aspx показал тот же оператор управления DataGrid, что и предыдущий, и установил различные атрибуты стиля. Это приведет к более привлекательному представлению. До сих пор нет необходимости вносить какие -либо изменения в код и использование кода, поддерживаемого теми же примерами, что и предыдущие примеры.
Поскольку он получен из WebControl, управление DataGrid наследует атрибуты стиля, такие как ширина, BackColor, BordersTyle и Font.Name. Кроме того, DataGrid предлагает такие атрибуты, как сотовая путаница, которые специфичны для таблицы. Этим атрибутам разрешено настраивать элементы управления в целом.
В заявлении также отображается несколько наборов стилей проекта, таких как стиль заголовков и charicingItemstyle. Эти стили контролируют внешний вид соответствующих элементов. Обратите внимание, что в этом примере появляется стиль стиля. Альтернативные проекты такие же, как и перспективы общих проектов, потому что их стили являются комбинациями charictingItemstyle и Itemstyle. Наконец, этот пример также объясняет стиль определенного столбца через текст в правом столбце цены.
DataGrid также позволяет форматировать текстовое содержание в своей ячейке. Это завершено путем установки значения свойства DataFormatString в BoundColumn. В столбце используется свой формат для форматирования содержимого ячейки string.format. Этот атрибут может быть предусмотрен или прикреплен к любому контенту с типом форматирования (например, дата или валюта). Кроме того, поскольку форматирование рассматривает культуру и запросы текущей страницы, он также поддерживает глобализацию. Если нет указанного формата, используйте метод ToString этого значения.
DataGrid4
DataGrid4 объясняет, как использовать выбор в DataGrid, обрабатывая событие SelectedIndIndExchanged.
Рисунок 7. Примеры, сгенерированные путем разрешения документа, содержащего элементы
Тест на dataGrid4.aspx:
<%@page language = c# src = dataGrid4.cs nhroits = samples.datagrid4page%>
Эластичный
<ASP: DataGrid Runat = Server ID = titleSgrid
AutogenerateColumns = false
ширина = 80%
Backcolor = белый
Borderwidth = 1px BordersTyle = твердое ячейки = 2 cell -spacing = 0
Bordercolor = tan
Font-name = Song Style Font-Size = 8pt
Dataqueyfield = title_id
On SelectedExchanged = OnSelectExchangeDesgrid>
<poperty name = columns>
<ASP: ButtonColumn Text = SELECT COMMAND = SELECT/>
<ASP: BoundColumn HeadelText = заголовок DataField = title/>
<ASP: BoundColumn HeadelText = Author DataField = Au_Name/>
<ASP: BoundColumn HeaderText = Дата опубликована DataField = pubdate
DataFormatString = {0: mmm yyyy}/>
<ASP: BoundColumn HeadEltext = цена DataField = цена
DataFormatString = {0: C}>
<poperty name = itemstyle>
<Asp: tableitemstyle horizontalign = right/>
</Property>
</asp: bounddcolumn>
</Property>
<poperty name = startyle>
<Asp: tableitemstyle backcolor = Darkred forecolor = белый
font-black = true/>
</Property>
<poperty name = itemstyle>
<ASP: TableItemStyle foreColor = darksLateBlue/>>>
</Property>
<poperty name = changingitemstyle>
<Asp: tableitemstyle backcolor = beige/>>
</Property>
<poperty name = selectDiteMStyle>
<Asp: tableitemstyle backcolor = palegoldenrod font-bold = true/>
</Property>
</asp: datagrid>
Эластичный
<ASP: Label Runat = Server ID = SelectInfulabel Font-name = Song Style Font-Size = 8pt/>
В файле .aspx была зарегистрирована программа обработки событий для выбранного события события DataGrid. Эта программа обработки инцидентов реализована в файле поддерживаемого кода. Buttoncolumn, которая была добавлена в столбец, установленную как «SELECT», заставляет DataGrid представлять дополнительный столбец, содержащий кнопку SELECT для каждого проекта. В то же время указан SelectedItemStyle. Этот стиль используется для отличия проектов от визуально. Наконец, указан атрибут DataGrid. Это поле будет размещено в коллекции данных DataGrid, которая будет использоваться в файлах с поддержкой кода.
dataGrid4.cs:
Образцы пространства имен {
Эластичный
Открытый класс dataGrid4page: page {
Защищенный DataGrid titleSgrid;
Защищенная ярлыка Searchinfolabel;
Public icollection getTitleslist () {
// Помещайте список заголовков из набора данных с высоким уровнем кеша в состоянии приложения.
DataSet titleSdataset = (DataSet) Приложение [titleSdataset];
if (titleSdataset! = null) {
Return titlesdataset.tables [title] .defaultView;
}
еще {
Вернуть ноль;
}
}
Private void LoadTitLesgrid () {) {)
// поиск данных из базы данных
icollection titleslist = getTitleslist ();
// Установить источник данных управления и сбросить свой выбор,
titleSgrid.datasource = titleSlist;
titleSgrid.selectDindex = -1;
// и заставить управление использовать этот источник данных для создания своего проекта
itlesgrid.databind ();
// Обновление выбранной информации о заголовке
UpdateSelecttitalInfo ();
}
Защищенный переопределение void everoad (eventargs e) {{
base.onload (e);
if (! iSpostback) {
// Смотрите эту страницу в первый раз
LoadTitLesGrid ();
}
}
// Обработка события DataGrid On SelectIndIndExchanged
Защищенная пустота на выборочном
Eventargs e) {
UpdateSelecttitalInfo ();
}
Private void updatesElecttitiationInfo () {{) {
// Получить выбранную индекс
int selindex = titleSgrid.selectex;
string selfieid = null;
String selectInfo;
if (selindex! = -1) {{
// Показать поле выбранного заголовка ключа
Seltitleid = (string) titlesgrid.data [selindex];
SelectionInfo = идентификатор выбранного заголовка: + seltitleid;
}
еще {
selectInfo = нет заголовка в настоящее время.;
}
selectInfulabel.text = selectInfo;
}
}
}
Этот файл .cs содержит логику обработки события SelectedIndexchan, и логику идентификатора выбранного заголовка в DataGrid. DataGrid обрабатывает командное событие, которое запускается кнопками, включенными в его проект. Он распознает стандартную команду «SELECT», которая заставляет ее изменять свойство SelectedIndex и запускает этот инцидент, чтобы изменить код уведомления пользователя.
В процессе реализации программ обработки событий пример кода вызывает метод UpdateSelecttitleinfo. Этот метод отвечает за отображение информации о выбранном названии книги. В более реалистичной схеме этот идентификатор может использоваться для связи страницы, чтобы отобразить более подробную информацию о выбранном заголовке.
Идентификатор получен путем посещения коллекции данных. Коллекция установлена из -за атрибута Dataqueyfield. Обычно установите его в качестве основного ключевого слова или других полей, которые могут быть идентифицированы домохозяйством, и используйте эту информацию в качестве руководящих принципов в запросе на базу данных последующих базы данных или данных фильтра.
В этом примере показано, как дополнительная поддержка операций, таких как выбор объектов в источнике данных, в дополнение к только объектам в источнике данных. DataGrid содержит поддержку для нескольких других функций (таких как сортировка, пейджинг, редакторы -сит и TemplateColumns). Тем не менее, эти специфические особенности превышают объем обсуждения этой статьи и будут обсуждаться в будущих статьях.
Ретранслятор, даталистский или документ?
Потедать, даталистские и данные управления DataGrid Общие модели публичных программ. В то же время каждый элемент управления предназначен для фокусировки на конкретной схеме. В этом разделе описывается функция управляющей иерархии и функции каждого управления, а также пример типичного решения, которое может использоваться каждый элемент управления.
Как вы можете видеть в структуре класса ниже, ретранслятор - это небольшой и легкий контроль. Он только наследует функции базового класса управления, такие как атрибуты ID и наборы суб -контроля. С другой стороны, управление Datalist и управление DataGrid наследуют функцию WebControl, такую как атрибуты стиля и внешнего вида.
Рисунок 8. Список -связывающий контроль структуры уровня класса
С точки зрения моделей объектов, управление ретранслятором является самым простым элементом управления. Это также самый маленький контроль привязки данных и в основном отличается, то есть он не заставляет какую -либо специальную компоновку пользовательского интерфейса. Окончательный метод индикации следует методу генерации текста. Этот контроль не обеспечивает какую -либо встроенную поддержку стилей и атрибутов внешнего вида или поведения. Это отличный выбор для решения, которое необходимо полностью контролировать.
Управление DataList - это ретранслятор, вынужденный использовать макет колонны или макет потока. Он унаследовал атрибуты внешнего вида, реализованные в веб -контроле, и добавляет другие атрибуты стиля, подходящие для элементов, которые он создал. Управление Datalist также включает в себя поддержку стандартных операций проекта (например, выбор, редактирование и удаление). Он очень подходит для потока последовательности уровня или вертикальных проектов, распределенных в ряду или строке.
Управление DataGrid вынуждено использовать список или макет строки. Подобно DataList, этот элемент управления предоставляет стили и атрибуты внешнего вида. В дополнение к выбору и редактированию, DataGrid также поддерживает расширенные операции по сбору всего проекта, такого как страницы и сортировка. Одно из основных различий между DataGrid и Datalist заключается в том, что DataGrid не содержит никаких атрибутов шаблона, то есть проекта или неэлемента управления DataGrid. Тем не менее, добавьте TemplateColumn в DataGrid, чтобы использовать шаблон в определенном столбце.
Следующая таблица представляет собой сводку функции, предоставленной управлением привязкой списка.
DataGrid DataList DataList Function
Шаблон (требуется) или внутри (требуемых) столбцов (необязательно)
Это макет списка?
Это макет потока
Является ли макет стиля дистрибуции/газетной колонки?
Являются ли атрибуты стиля и внешнего вида
Выберите, да
Редактировать
Это удалено?
Нет страниц
Это отсортировано?
Связанные ресурсы
С примерами QuickStart, опубликованными Microsoft .net Framework SDK, было несколько примеров этих элементов управления, и примеры, которые объясняли данные о доступе к данным с помощью XML и веб -сервисов. Документ, прикрепленный к SDK, включает в себя концептуальные данные соответствующей темы, такие как структура страницы ASP+ и управление сервером, а также справочная библиография объектной модели как часть управления этим кадром.