Используйте управление привязкой ASP+ List
Нихил Котари
Microsoft Corporation
Июль 2000
Аннотация: Объясните элементы управления сервером Datalist и DataGrid. Эти элементы управления могут реализовать источник данных, пользовательский интерфейс приложения на основе HTML. Обсудите концепции, связанные с этими элементами управления, и обобщить основные примеры использования этих элементов управления.
Оглавление
Краткое введение
Как работает контроль привязки списка?
Управление повторителями
DataList Control
Управление DataGrid
Ретранслятор, даталистский или документ?
Связанные ресурсы
Загрузите пример файла (56 КБ), связанный с этой статьей.
Краткое введение
Управление ретранслятором, даталистом и данных составляют соответствующие наборы веб -управления в пространстве имени в System.Web.WebControls в структуре ASP+ Page. Эти элементы управления делают содержимое списка привязки или источника данных дисплея HTML. Поэтому они в совокупности называют их «списками контроля привязки».
Подобно другим веб -элементам управления в рамках, эти элементы управления предоставляют постоянные модели программирования и инкапсулируют репрезентативную логику, независимую от браузера. Эти характеристики позволяют разработчикам программировать в моделях объектов без необходимости овладеть непоследовательными и сложными техническими знаниями, связанными с HTML.
Эти три элемента управления могут представлять контент источника данных, связанный с соответствующими их источниками данных в соответствии с различными макетами (включая списки, столбцы/столбцы газет и макеты потоков (HTML -потоки)). Кроме того, они также позволяют вам создавать совершенно другую или полностью индивидуальную макет. В дополнение к логике упаковки, она также обеспечивает функцию обработки передаваемых данных, управления состоянием выполнения и запускаемых событий. Наконец, они также обеспечивают различные уровни поддержки для стандартных операций, таких как отбор, редактирование, пейджинг и сортировка. Эти элементы управления могут упростить несколько общих веб -приложений, включая отчеты, корзины покупок, списки продуктов, результаты запроса и меню навигации.
Следующее будет дополнительно иллюстрирует эти элементы управления и как их использовать в ваших веб -приложениях и как выбрать элементы управления.
Как работает контроль привязки списка?
Этот раздел является фоновым материалом остальной части этой статьи. Обзор методов работы этих элементов управления связыванием списка, их общих характеристик и определенных связанных концепций.
Атрибут данных
Каждый элемент управления имеет атрибут данных с его типом System.collections.icollection. В простых словах источники данных представляют собой список или сбор подобных объектов.
Несколько объектов в этой структуре обеспечивают реализацию Icolection. Эта коллекция включает в себя System.Data.DataView (она обычно используется для доступа к реляционным базам данных и данных XML), общую реализацию ICollection (например, ArrayList и Hashtable) и массив.
В отличие от традиционных элементов управления привязкой данных (им обычно нужны наборы записей ADO), за исключением реализации интерфейса Icollection, эти элементы привязки списка не усиливают никаких других требований для их источников данных. Согласно дизайну, тип и структуру данных, которые можно использовать в качестве допустимого значения атрибута данных через большое количество, и они могут максимизировать простую и гибкость для вашего кода приложения.
Коллекция проекта
Каждый контроль привязки списка содержит набор проектов. Управление устанавливается в свой сбор проектов, перечисляя текущий источник данных этих объектов. Создайте один элемент для каждого объекта и используйте его для представления объекта. Эти элементы являются частью контрольной иерархической структуры, содержащейся в управлении связыванием списка.
В таблице ниже перечислены тип проекта, связанный с источником данных.
Тип проекта по умолчанию, созданный проектом
ChericingItem - это создание проекта с нечетными ставками в коллекции проектов
SelectedItem создан для выбранного проекта (независимо от того, является ли проект альтернативным проектом)
Edititem создан для проектов в режиме редактирования (будь то выбрано или альтернатива)
Управление будет создано одновременно в следующих элементах, которые будут использоваться. Однако они не связаны с данными источника данных.
Заголовок используется для представления информации о заголовке
Сноска используется для обозначения информации о ноге
Сепараторы используются для представления содержания между каждым элементом, показанным на рисунке 1, и это применимо только к ретранслятору и даталистам
Символ пейджинга используется для указания пользовательского интерфейса страниц, связанного с управлением DataGrid
Рисунок 1. По сравнению с коллекцией «Проект» коллекции «Контроль»
Привлечение и создание данных проекта
Управление привязкой списка следует за явной моделью привязки данных, реализованной во всей структуре ASP+. Это означает, что элемент управления должен быть указан только при вызове метода базы данных.
Когда метод DataBind вызовет, элемент управления списком перечисляет свой источник данных, создаст проект и инициализирует его путем извлечения значения из его источника данных. Если управление состоянием включено, элемент управления также сохранит всю необходимую информацию для повторного создания своего проекта в течение периода обработки возврата страницы без повторного определения источника данных.
Явная модель привязки данных позволяет вашему коду приложения точно определять, когда и где источник данных необходим в последовательности обработки. Эта функция делает доступ к серверам баз данных меньше и более эффективным, и эти доступ, как правило, являются наиболее потребляемой работой веб -приложений.
Общее правило состоит в том, что DataBin должен вызывать всякий раз, когда вам нужно воссоздать проект. В большинстве случаев вы вызовете DataBind, когда ваша страница будет предложена впервые создать начальную коллекцию проектов. Во время выполнения выполнения этой страницы вам нужно будет вызвать этот метод в различных процедурах обработки событий, которые изменяются с помощью коллекции проектов. Это происходит, когда может произойти запрос, используемый для создания начального источника данных. Это также может произойти, когда изменение статуса проекта (например, переход только с режима редактирования).
стиль
Используя атрибуты стиля на модели объекта, вы можете определить все элементы управления DataList и DataGrid, а также форматы и внешности, которые он содержит. Этим атрибутам разрешено настраивать шрифты, цвета, границы и другие факторы внешнего вида. Стиль атрибут самого управления (например, цвет переднего плана, цвет фона, шрифт и стиль границы) повлияет на представление всего управления.
Кроме того, каждый элемент управления содержит большое количество атрибутов стиля, которые соответствуют типам созданных элементов, например, как стиль элемента, charictingItemstyle и Headersstyle. DataGrid предлагает атрибуты в стиле третьего уровня, которые влияют на все ячейки в определенных столбцах. Каждый столбец, содержащийся в управлении, может иметь свои собственные Headlderstyle, ToolsTyle и Itemstyte.
шаблон
Отображается формат управления стилем, в то время как шаблон определяет содержимое и представление каждого элемента. Вы можете думать о шаблоне как листе кода HTML, который определяет управляющую иерархическую структуру, используемую для представления проекта.
Управление по ретранслятору и даталистам управляется вашими указанными шаблонами для предоставления различных установленных свойств шаблона, таких как ItemTemplate, charictingItemtemplate и Headertemplate. Подобно стилю, каждый шаблон соответствует определенному типу проекта.
Управление DataGrid не шаблон. Тем не менее, TemplateColumns в сборе столбцов управления используют шаблоны в DataGrid. Каждая ячейка в TemplateColum может содержать шаблон, который очень похож на элементы в ретрансляторе или управлении данных. Это также делает возможным настройку в DataGrid.
Привязка данных в шаблоне
Управляющая иерархическая структура, содержащаяся в элементах определения шаблона. Используя выражения привязки данных, атрибуты управления в этой структуре уровня могут быть связаны с свойствами данных, связанными с этим проектом.
Проект логического родительского уровня в виде шаблона называется «контейнер» в выражении привязки данных. Каждый контейнер имеет атрибут под названием Dataitem, который цитирует связанные с ним данные. В результате большинство типичных выражений связывания данных в шаблоне связывают атрибуты управления на определенном свойстве контейнера. Это связывание будет дополнительно объяснено в следующих примерах.
Управление повторителями
Как упоминалось ранее, управление ретранслятором полностью управляется шаблоном, позволяя полностью настроить представление и макет. Рисунок ниже иллюстрирует эту функцию.
Рисунок 2. Список ссылок символов связанных проектов, сгенерированных с использованием управления ретранслятором
Выдержка с Repeater1.aspx:
<%@page language = c# src = repeater1.cs henhits = samples.repeter1page%>
Эластичный
<ASP: Repeater Runat = Server Id = Linkslistrepeater
dataSource = '< %# siteElinks %>'>
<Имя шаблона = Headertemplate>
<ul type = 1>
</шаблон>
<шаблон name = itemtemplate>
<li>
<ASP: Hyperlink Runat = сервер
Text = '< %# databinder.eval.eval (container.dataitem, site) %>'
navicateurl = '< %# databinder.eval.eval.dataitem, siteurl) %>'>
</asp: гиперссылка>
</li>
</шаблон>
<Имя шаблона = SOITERTEMPLATE>
</ul>
</шаблон>
</asp: Repeater>
Этот файл .aspx показал утверждение генерации управления ретранслятором для создания списка символов проекта.
Этот пример иллюстрирует метод ответа на установку источника данных с помощью синтаксиса привязки данных (<%#...%>). Когда вы вызываете метод базы данных, выражение в привязке данных выполняется. В этом случае свойство DataSource Repeater связано с свойством SiteLinks на странице, а последняя содержит отображение ссылки на URL.
Repeater - единственный контроль, который позволяет HTML -фрагментам существовать в своем шаблоне. В этом примере список символов проекта разделен на три части:
Начало списком Headertemplate (<ul type = 1>).
Завершите этикетку (</ul>) списком, представленным Footertemplate.
Основное тело списка размещено из элемента списка (<li>), сгенерированного путем повторения ItemTemplate в каждом объекте в наборе SiteLinks.
Вы также можете использовать эти шаблоны, чтобы указать начальную марку (<able>) в заголовке, конечная метка (</table>) указывает таблицу в сноске и указывает одну линию наблюдения в каждом проекте (<te>) Сущность Этот вариант замены приведет к представлению списка.
Вы должны указать ItemTemplate. Это единственный необходимый шаблон. Когда другие шаблоны не указаны, элемент управления автоматически использует этот ItemTemplate для других шаблонов.
В следующем примере ItemTemplate содержит веб -управление гиперссылкой. Текст этого элемента управления и атрибуты Navicateurl связаны с свойствами данных, связанными с каждым дублированным проектом. Это завершено с помощью выражения привязки данных (немедленно поиск выражения после создания проекта).
Repeater1.cs:
Образцы пространства имен {
Эластичный
Открытый класс Repeater1page: Page {
Защищенный ретранслятор Linkslistrepeater;
Public icollection siteElinks {
получать {
Arraylist Sites = new ArrayList ();
Sites.add (New SiteInfo (Microsoft Home,
http://www.microsoft.com);
Sites.add (New SiteInfo (MSDN Home,
http://msdn.microsoft.com);
Sites.add (New SiteInfo (MSN HomePage,
http://www.msn.com));
Sites.add (new siteinfo (hotmail,
http://www.hotmail.com));
Возвратные сайты;
}
}
Защищенный переопределение void everoad (eventargs e) {{
base.onload (e);
if (! iSpostback) {
// При первом запросе страницу выполняется привязка данных.
// Это будет рекурсивно вызовать каждое управление в иерархической структуре управления этой страницей.
DataBind ();
}
}
}
публичный герметичный класс siteInfo {
Частный строковый сайт;
Private String SiteUrl;
public SiteInfo (String SiteName, String SiteUrl) {{
this.siteName = SiteName;
this.siteurl = siteurl;
}
сайт публичной строки {
get {return site;}
}
public String SiteUrl {
geturn siteurl;}
}
}
}
Этот файл .cs содержит код, который появляется вместе на странице ASPX в предыдущем списке.
Класс Repeater1 -Page охватывает метод нагрузки класса страницы. Это указывает на то, что DataBind вызывается в первом запросе этой страницы. Это приведет к тому, что выражение привязки данных на этих страницах ценит данные и составит список управления ретранслятором источника данных и создать их проекты. Вызовите метод Databind только при первом запросе. Причина, по которой это может работать, заключается в том, что ретранслятор может переоценить свой проект в процессе возврата сохранившегося статуса, без необходимости в экземплярах источника данных.
Эта страница раскрывает публичные атрибуты типа Icolection. Это будет использоваться в выражении привязки данных значения атрибута данных ретранслятора. Приобретение атрибутов использует ArrayList, содержащий набор последовательностей сайта. Этот атрибут является общедоступным, потому что только страницы общественных и защитников могут использоваться в выражениях привязки данных.
Каждый объект SiteInfo имеет два атрибута: SiteName и SiteUrl. Когда связывание данных управления гиперссылкой в шаблоне обратитесь к этим атрибутам. В привязывании этого контроля контейнер. Датайтем сказал, что необходимо привязывать конкретный элемент с одним объектом SiteInfo. DataBinder.Eval (Container.Dataitem, SiteName) посещает свойство SiteName текущего объекта SiteInfo.
Repeater1 Пример знакомит вас с несколькими основными понятиями:
Шаблон определения
Грамматика связывания данных и экспрессия связывания данных в шаблоне
Используйте Icolection ArrayList в качестве источника данных
Вызовите метод DataBind во время начальной страницы обработки
DataList Control
Управление Datalist -это шаблон -ориентированный элемент управления, который обеспечивает возможность использовать атрибуты стиля для форматирования его способности. Это также может создать несколько столбцов. Рисунок 3 иллюстрирует эти две характеристики.
Рисунок 3. Примеры, полученные из двух столбцов Datalist
Выдержка из Datalist1.aspx:
<%@page language = c# src = datalist1.cs nhroits = samples.datalist1page%>
Эластичный
<Asp: datalist runat = server id = peicaldatalist
RepeatColumns = 2 RepeatDirection = Vertical RepeatMode = Таблица
Ширина = 100%>
<poperty name = changingitemstyle>
<Asp: tableitemstyle backcolor =#elyeee/>
</Property>
<шаблон name = itemtemplate>
<ASP: панель Runat = Server Font-Size = 12pt font-bold = true>
< %# ((Человек) container.dataitem) .name %>
</asp: панель>
<ASP: метка Runat = ширина сервера = 20px
Borderstyle = твердое пограничное время = 1px bordercolor = черный
backcolor = '< %# ((человек) intainer.dataitem)
</asp: метка>
<asp: метка Runat = server font-size = 10pt
Text = '< %# getColorname (((человек) контейнер.dataitem)
</asp: метка>
</шаблон>
</asp: datalist>
Этот файл .aspx показал оператор Datalist, используемый для генерации этого примера.
В этом примере мульти -колуменный макет данных дата достигается путем установки свойства RepectColumns на «2». Установка повторного управления как «вертикального» заставит проект расположен вверху вниз, а затем расположены слева направо. И наоборот, значение, установленное «горизонтальным», приведет к тому, что проект будет расположен слева направо, а затем сверху вниз.
Синтаксис ASPX содержит настройки для нескольких атрибутов стиля данных. В этом примере ширина Datalist установлена на 100%его родительского уровня. Армитинг -сайт с серым фоном - это получить полосатый вид. Этот пример также показывает, что шаблон может содержать любое сложное определение управления для удовлетворения потребностей получения идеального макета в каждом проекте.
Наконец, экспрессия связывания данных в этом шаблоне является связыванием на ранней стадии путем преобразования intaner.dataitem в его тип. Это не приведет к более поздним связыванию более позднего связывания более позднего связывания использования DataBinder.Eval (как показано в Repeater1). Тем не менее, этот метод может привести к плохой читабельности. В следующем примере также приведен пример выражения, который вызывает метод GetColorname (этот метод реализован в файле, поддерживаемом на этой странице).
datalist1.cs:
Образцы пространства имен {
Эластичный
открытый класс datalist1page: page {
Защищенный даталистский народный народ;
Защищенная строка getColorname (Color C) {
Возвращаться
Typedescriptor.getconverter (typeof (color)).
}
Prive void LoadPeicallist () {
// Создать источник данных
Человек [] people = новый человек [] {
Новый человек (Нихил Котари, Color.green),
Новый человек (Стив Миллет, Color.purple), Color.purple),
Новый человек (Крис Андерсон, Color.blue), Color.blue,
Новый человек (Майк Папа, Color.orange),
Новый человек (Энтони Мур, Color.yllow),
Новый человек (Джон Юнг, Color.Mediumaquamarine),
Новый человек (Сьюзен Уоррен, Color.SlateBlue),
Новый человек (Иззи Грико, Color.red)
};
// Установить источник данных управления
peicaldatalist.datasource = pesple;
// и заставить управление использовать этот источник данных для создания своего проекта
peicaldatalist.databind ();
}
Защищенный переопределение void everoad (eventargs e) {{
base.onload (e);
if (! iSpostback) {
// Смотрите эту страницу в первый раз
LoadPeicallist ();
}
}
}
публичный герметичный классный человек {
Приватное название строки;
Prive Color FavoriteColor;
Публичное лицо (название строки, цвет FavoriteColor) {{
this.name = name;
this.favoritecolor = FavoriteColor;
}
Публичный цвет фаворит {
Geturn FavoriteColor;}
}
Название публичной строки {
geturn name;}
}
}
}
На этой странице атрибут DataSource управления устанавливается через настройки программы, которые определяются в файле ASPX. Результаты двух методов одинаковы. Какой метод не может быть выбран, вы должны вызвать метод базы базы данных, чтобы элемент управления мог перечислить свои источники данных и создавать элементы, которые он хочет указать.
Источник данных, используемый в этом примере, представляет собой простой массив объекта человека. Поскольку каждый массив реализует метод Icolection, массив подходит для источника данных. Это показывает гибкость, которая может быть получена, когда структура и тип данных могут быть получены, когда можно получить источник данных.
Пример DataList1 представляет следующие концепции:
Определите богатый HTML -интерфейс в шаблоне
Используйте простой массив в качестве источника данных
Установите источник данных через программу
Различные выражения разрешены при синтаксисе связывания данных