Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Элементы управления, использующие привязку данных. Элемент управления Repeater. Элемент управления DataList. Редактирование элементов



Основы привязки данных

Привязка данных — это средство, которое позволяет вам ассоциировать источник данных с элементом управления с целью автоматического отображения данных в этом элементе управления. Ключевой характеристикой привязки данных являет ее декларативный, а не программный характер. Это значит, что привязка данных определена вне вашего кода, наряду с элементами управления на странице.aspx. Преимущество этого состоит в том, что такой подход позволяет достичь более четкого разделения между элементами управления и логикой кода вашей Web-страницы.

В ASP.NET большинство элементов управления (включая TextBox, LinkButton, Image и многие другие) поддерживают привязку данных с одним значением (single-value). Такая привязка позволяет связать свойство элемента управления с источником данных, но элемент управления может отображать единственное значение.

Многие элементы управления Web поддерживают привязку с множественными значениями (repeated-value); это означает, что они могут отображать наборы элементов. Если элемент управления поддерживает такую привязку, он всегда предоставляет свойство DataSource, которое принимает объект данных. Когда вы устанавливаете свойство DataSource, то тем самым создаете логическую связь серверного элемента управления с объектом данных, который содержит информацию, подлежащую отображению.

Привязка одного значения

Элементы управления, которые поддерживают привязку данных в режиме одного значения, позволяют привязать некоторые из их свойств к выражению привязки данных. Это выражение вводится в части.aspx разметки страницы (не в поле кода) и заключается между ограничителями <%# и %>.

Вот пример:

<%# выражение_находится_здесь %>

Это может выглядеть как блок сценария, однако оно таковым не является. Если вы попытаетесь написать любой код внутри дескриптора, то получите ошибку. Единственное, что сюда можно поместить — это допустимое выражение привязки. Например, если у вас есть общедоступная или защищенная переменная в именем EmployeeName, вы можете написать следующее:

<%# EmployeeName %>

Чтобы вычислить выражение привязки вроде этого, вы должны вызвать в своем коде метод Page.DataBind(). Когда вы вызываете Page.DataBind(), ASP.NET проверяет все выражения на вашей странице и заменяет их соответствующими значениями (в данном случае — текущим значением переменной EmployeeName). Если вы забудете вызвать метод DataBind(), выражение привязки не заполнит элемент управления — вместо этого он будет просто отброшен, когда ваша страница будет преобразована в HTML.

Источник для привязки одного значения может включать значение свойства, переменную-член или возвращаемое значение функции (до тех пор, пока свойство, переменная-член или функция имеет доступ типа protected или public). Это также может быть любое другое выражение, которое может быть вычислено во время выполнения, такое как ссылка на свойство другого элемента управления или как результат вычисления с использованием литеральных значений и операций с ними, и так далее. Вот несколько примеров корректных выражений привязки данных:

<%# GetUserName(ID) %>

<%# 1 + (2 * 20) %>

<%# "John " + "Smith" %>

<%# Request.Browser.Browser %>

Вы можете размещать ваши выражения привязки данных практически в любом месте страницы, но обычно вы будете присваивать выражение привязки данных свойству в управляющем дескрипторе.

Рассмотрим пример страницы, использующей несколько выражений привязки данных:

<html>

<body>

<form method="post" runat="server">

<asp:Image ID="Image1" runat="server" ImageUrl ='<%# FilePath %>' /><br />

<asp:Label ID="Label1" runat="server" Text='<%# FilePath %>' /><br />

<asp:TextBox ID="TextBox1" rurtat="server" Text='<%# GetFilePath() %>' /><br />

<asp:HyperLink ID="HyperLink1" runat="server"

HavigateUrl='<%# LogoPath.Value %>' Font-Bold="True" Text="Show logo" />

<br />

<input type="hidden" ID="LogoPath" runat="server" value="apress.gif">

<b><%# FilePath %></b><br />

<img src="<%# GetFilePath() %>">

</form>

</body>

</html>

Как видите, вы можете не только привязать свойство Text элемента управления Label или TextBox, но также использовать и другие свойства, такие как ImageURL элемента управления Image, NavigateUrl элемента управления HyperLink и даже атрибут src статического HTML-дескриптора <img>. Вы также можете поместить выражение привязки в любом месте страницы, не привязывая его ни к какому свойству или атрибуту. Например, предыдущая Web-страница содержит выражение привязки между дескрипторами <b> и </b>. Во время обработки результирующий текст будет помещен на странице и отображен полужирным шрифтом. Вы даже можете поместить выражение вне раздела <form> до тех пор, пока не пытаетесь туда вставить элементы управления серверной стороны.

Выражения на этой странице примера ссылаются на свойство FilePath, функцию GetFilePath() и свойство Value скрытого поля серверной стороны, которое объявлено на той же странице. Чтобы завершить эту страницу, вы должны определить следующие ингредиенты в блоках сценариев или классе скрытого кода:

protected string GetFilePath ()

{

return "apress.gif";

}

protected string FilePath

{

get { return "apress.gif"; }

}

В этом примере свойство и функция возвращают только жестко закодированные строки. Однако вы можете добавить практически любой код С#, чтобы динамически генерировать значения для выражений привязки данных.

Важно помнить, что выражения привязки данных не устанавливают напрямую свойства, к которым они привязаны. Они просто определяют соединение между свойством элемента управления и некоторой порцией информации. Чтобы заставить страницу вычислить выражение, запустить соответствующий код, присвоить соответствующее значение, вы должны вызвать метод DataBind() содержащей страницы, как показано ниже:

protected void Page_Load(object sender, System.EventArgs e)

{

this.DataBind();

}

Привязка множественного значения

Привязка множественного значения позволяет вам привязать целый список информации к элементу управления. Этот список информации представлен объектом данных, который является оболочкой коллекции элементов. Это может быть коллекция пользовательских объектов.

ASP.NET включает несколько базовых списковых элементов управления, которые поддерживают привязку множественных значений:

Все элементы управления, которые генерируют свой код с использованием дескриптора <select>,. включая элементы управления HtmlSelect, ListBox и DropDownList.

Элементы управления CheckBoxList и RadloButtonList, генерирующие каждый дочерний элемент в виде отдельного флажка или переключателя.

Элемент управления BulletedList, создающий список с метками или пронумерованными пунктами.

Все эти элементы управления отображают однозначное (single-value) поле свойства каждого элемента данных.

Все списковые элементы управления, по сути, одинаковы. Единственное отличие заключается в способе их преобразования в HTML и в том, позволяют ли они множественное выделение.

Эти элементы управления объявлены следующим образом:

<select runat="server" ID="Select1" size="3"

DataTaxtField="Key" DataValueField="Value" />

<select runat="server" ID="Select2"

DataTextField="Key" DataValueField="Value" />

<asp:ListBox runat="server" ID="Listbox1" Size="3"

DataTextField="Key" DataVaaueField="Value" />

<asp:DropDownList runat="server" ID="DropdownList1"

DataTextFleld="Key" DataValaeField="Value" />

<asp:RadioButtonList runat="server" ID="OptionList1"

DataTextField="Key" DataValueField="Value"/>

<asp:CheckBoxList runat="server" ID="CheckList1"

DataTextField="Key" DataValueField="Value" />

<br /><br />

<asp:Literal runat="server" ID="Result" EnableViewState="False"/>

Последний элемент управления Literal, отображает информацию о выбранных элементах. Его атрибут EnableViewState установлен в false, поэтому его содержимое будет очищаться после каждой обратной отправки.

Общие сведения о серверных веб-элементах управления ASP.NET с привязкой к данным.

Серверные веб-элементы управления с привязкой к данным — это элементы управления, которые можно привязать к элементу управления источником данных для облегчения отображения и изменения данных в веб-приложении. Серверные веб-элементы управления с привязкой к данным являются составными элементами управления, которые объединяют веб-элементы управления ASP.NET, например, элементы управления Label и TextBox в одну структуру.

В дополнении к привязке элемента управления к набору результирующих данных, элементы управления с привязкой к данным позволяют настраивать структуру элемента управления с помощью шаблонов. Кроме того, они предоставляют подходящую модель для обработки и отмены событий.

В данном разделе описано, как выполнить привязку серверных веб-элементов управления к данным, а также элементов управления с привязкой к данным, которых входят в состав ASP.NET.

Привязка к данным серверного веб-элемента управления с привязкой к данным

Можно выполнять привязку элемента управления с привязкой к данным к элементу управления источником данных, например, к элементу управления ObjectDataSource или SqlDataSource.Элемент управления источником данных подключается к источнику данных, например, базе данных или объекту среднего уровня и затем извлекает или обновляет данные.После этого элемент управления с привязкой к данным может использовать полученные данные.Для выполнения привязки необходимо задать для свойства DataSourceID элемента управления с привязкой к данным значение, указывающее элемент управления источником данных.Когда элемент управления с привязкой к данным связан с элементом управления источником данных, дополнительного программного кода для операций с данными не требуется, т. к. элемент управления с привязкой к данным автоматически использует функциональные возможности служб данных, предоставляемых элементом управления источником данных.

Использование серверных веб-элементов управления с привязкой к данным с платформой динамических данных ASP.NET

Некоторые элементы управления ASP.NET с привязкой к данным поддерживаются платформой динамических данных ASP.NET, включая элементы управления DetailsView, FormView, GridView и ListView.

Интерфейсы IDataBoundControl, IDataBoundListControl, IDataBoundItemControl и IFieldControl предоставляют доступ к общим свойствам, обеспечивающим поддержку платформы динамических данных.Если создается пользовательский элемент управления с привязкой к данным, который будет функционировать на платформе динамических данных, можно реализовать эти интерфейсы вместо того, чтобы создавать производные от класса DataBoundControl.

Элемент управления GridView

Элемент управления GridView отображает данные в виде таблицы и позволяет выполнять сортировку столбцов, перемещение по данным, изменение и удаление одной записи.

Элемент управления DetailsView

Элемент управления DetailsView отображает одновременно одну запись в виде таблицы и позволяет перемещаться по нескольким записям, а также выполнять операции вставки, обновления и удаления записей.Элемент управления DetailsView часто используется в скриптах "основной — подробности", в которых выбранная запись в главном элементе управления, например, в элементе управления GridView определяет запись, отображаемую элементом управления DetailsView.

Элемент управления FormView

Элемент управления FormView отображает одновременно одну запись из источника данных и позволяет перемещаться по нескольким записям, а также выполнять операции вставки, обновления и удаления записей подобно элементу управления DetailsView.Различие между элементами управления FormView и DetailsView заключается в том, что элемент управления DetailsView использует табличную структуру, в которой каждое поле записи данных отображается как строка в элементе управления.Напротив, элемент управления FormView не задает предопределенную структуру для отображения записи.Вместо этого разработчику необходимо создать шаблоны, которые содержат элементы управления для отображения отдельных полей из записи.Шаблон содержит форматирование, элементы управления и выражения привязки данных, используемые для расположения формы.Можно задать, должен ли элемент управления FormView отображать содержимое с использованием таблиц. Для этого нужно задать свойству RenderTable() значение true.

Элемент управления Repeater

Элемент управления Repeater отображает список, доступный только для чтения, из набора записей, полученного от источника данных.Подобно элементу управления FormView элемент управления Repeater не задает встроенную структуру отображения.Вместо этого структура для элемента управления Repeater создается разработчиком с помощью шаблонов.

Элемент управления DataList

Элемент управления DataList отображает данные в виде таблицы и позволяет отображать записи данных в различных структурах, например, упорядочивая их по столбцам или строкам.Чтобы разрешить пользователям изменять и удалять запись в таблице, необходимо настроить элемент управления DataList.(Для изменения данных элемент управления DataList не использует возможности элементов управления источником данных. Это необходимо реализовать в коде самостоятельно.) Элемент управления DataList отличается от элемента управления Repeater тем, что элемент управления DataList явно помещает элементы в HTML-таблицу, тогда как элемент управления Repeater не выполняет этого.

Элемент управления ListView

Элемент управления ListView отображает данные из источника данных в формате, который задается разработчиком с помощью шаблонов.Шаблон содержит форматирование, элементы управления и выражения привязки данных, которые используются для размещения данных.Как правило, элемент управления ListView используется для данных в любой повторяющейся структуре схожей с элементами управления DataList и Repeater.Однако в отличии от элементов управления DataList и Repeater, элемент управления ListView неявно поддерживает операции изменения, вставки и удаления, а также операции сортировки и разбиения по страницам.

Элемент управления Repeater

Элемент управления Repeater является списком, построенным на основе шаблонов и привязанным к данным. Элемент управления Repeater является "безликим" (не имеет встроенных стилей и форматирования). Таким образом, в шаблонах этого элемента управления необходимо явно объявлять теги стилей, форматирования и разметки HTML.

Серверный веб-элемент управления Repeater является контейнерным элементом управления с привязкой к данным, который создает список отдельных элементов. Структура отдельных элементов на веб-странице определяется с помощью шаблонов. При выполнении страницы данный элемент управления повторяет структуру для каждого элемента в источнике данных.

Серверный веб-элемент управления Repeater — это контейнерный элемент управления, позволяющий создавать настраиваемые списки на основе любых данных, доступных странице.Элемент управления Repeater не имеет встроенной собственной отрисовки, это означает, что необходимо предоставить макет для элемента управления Repeater с помощью создания шаблонов.При выполнении страницы элемент управления Repeater циклически просматривает записи в источнике данных и отображает элемент для каждой записи.

Элемент управления Repeater не имеет используемого по умолчанию внешнего вида, поэтому его можно использовать для создания многих типов списков, в том числе следующих:

Структура таблицы

Список, в котором разделителем является запятая (например, a, b, c, d, и т. д.)

Список в формате XML

Использование шаблонов с элементом управления Repeater

Для использования элемента управления Repeater создаются шаблоны, определяющие размещение содержимого элемента управления.Шаблоны могут содержать любое сочетание разметки и элементов управления.Если шаблоны не определены или ни один из шаблонов не содержит элементы, то элемент управления не появится на странице при выполнении приложения.

Привязка данных к элементу управления Repeater

Элемент управления Repeater должен быть привязан к источнику данных.Наиболее распространенным источником данных является элемент управления источником данных, например элемент управления SqlDataSource или ObjectDataSource.Кроме того, можно привязать элемент управления Repeater к любому классу, реализующему интерфейс IEnumerable, который включает наборы данных ADO.NET, объекты чтения данных или большинство коллекций.

При связывании данных источник данных указывается для всего элемента Repeater целиком.При добавлении элементов управления к элементу управления Repeater например, при добавлении элемента управления Label или TextBox к шаблону — нужно использовать синтаксис привязки данных для привязки отдельного элемента управления к полю элементов, возвращаемых источником данных.

События, поддерживаемые элементом управления Repeater

Элемент управления Repeater поддерживает несколько событий.Одно из них, событие ItemCreated, дает возможность управлять процессом создания элементов во время выполнения.Событие ItemDataBound также позволяет настраивать элемент управления Repeater, но только после того, как данные становятся доступны для проверки.Например, при использовании элемента управления Repeater для отображения списка необходимых дел можно показывать просроченные элементы красным цветом, выполненные — черным, а остальные — зеленым.Любое из вышеописанных событий может быть использовано для переопределения форматирования, определенного в шаблоне.

При нажатии кнопок отдельных элементов возникает событие ItemCommand.Это событие разработано так, чтобы позволить внедрить серверные веб-элементы управления Button, LinkButton, или ImageButton в шаблон элемента, а потом получать уведомление о нажатии пользователем кнопки.При нажатии кнопки событие передается в контейнер кнопки — элемент управления Repeater.Наиболее часто событие ItemCommand используется для программирования поведений обновления и удаления в элементе управления Repeater.Так как каждое нажатие кнопки вызывает одно и то же событие ItemCommand, то можно определить, какая кнопка была нажата, установив для свойства CommandName каждой кнопки уникальное строковое значение.Свойство CommandSource параметра RepeaterCommandEventArgs содержит свойство CommandName нажатой кнопки.

Общие сведения о серверном веб-элементе управления DataList

Серверный веб-элемент управления DataList отображает строки сведений базы данных в настраиваемом формате. Формат для отображения данных определяется в создаваемых шаблонах. Можно создавать шаблоны для элементов, чередующихся элементов, выбранных элементов и редактируемых элементов. Для настройки общего вида DataList имеются также шаблоны заголовка, нижнего колонтитула и разделителя. Добавление серверного веб-элемента управления Button в шаблоны позволяет подключить элементы-списки к коду, что дает возможность пользователям переключаться между режимами отображения, выделения и редактирования.

Серверный веб-элемент управления DataList отображает данные в формате, который можно определить с помощью шаблонов и стилей.Элемент управления DataList удобно использовать для данных в любой повторяющейся структуре, например в таблице.Элемент управления DataList может отображать строки в различных макетах, например упорядочивать их в столбцы или строки.

При необходимости в элементе управления DataList можно настроить возможность редактирования или удаления данных пользователем.Можно также настроить этот элемент управления для поддержки других функциональных возможностей, например для выделения строк.

Вид элементов данных задается шаблонами с использованием элементов управления и текста HTML.Например, серверный веб-элемент управления Label можно использовать для отображения поля из источника данных.

В следующих разделах описываются основные возможности элемента управления DataList.

Привязка данных к элементу управления

Серверный веб-элемент управления DataList должен быть привязан к источнику данных.Наиболее распространенным источником данных является элемент управления источником данных, например элемент управления SqlDataSource или ObjectDataSource.Кроме того, можно привязать элемент управления DataList к любому классу, реализующему интерфейс IEnumerable, который включает наборы данных ADO.NET (класс DataSet), объекты чтения данных (классы SqlDataReader или OleDbDataReader) или большинство коллекций.При выполнении привязки данных источник данных указывается для всего элемента управления DataList в целом.При добавлении к данному элементу управления других элементов управления, например при добавлении меток или текстовых полей в элемент «Список», можно привязывать свойства дочерних элементов управления к полям в текущем элементе данных.

Определение шаблонов для элементов DataList

В элементе управления DataList можно задавать структуру данных при помощи шаблонов.

События

Элемент управления DataList поддерживает определенные события.Одно из них, событие ItemCreated, дает возможность настраивать процесс создания элементов во время выполнения.Событие ItemDataBound также предоставляет возможность настройки элемента управления DataList, но только после того, как данные становятся доступными для проверки.Например, при использовании элемента управления DataList для отображения списка необходимых дел можно показывать просроченные элементы красным цветом, выполненные — черным, а остальные — зеленым.Любое из вышеописанных событий может быть использовано для переопределения форматирования, определенного в шаблоне.

Остальные события вызываются в ответ на нажатия кнопок в элементах-списках.Они разработаны, чтобы упростить реагирование на наиболее часто используемые функциональные возможности элемента управления DataList.Поддерживаются четыре события этого типа:

EditCommand

DeleteCommand

UpdateCommand

CancelCommand

Чтобы вызвать эти события, следует добавить элементы управления Button, LinkButton или ImageButton в шаблоны элемента управления DataList и установить для свойства CommandName кнопки ключевое слово, например edit, delete или updatecancel.Когда пользователь нажимает кнопку в элементе, событие передается в контейнер кнопки — элемент управления DataList.Конкретное событие, вызываемое нажатием на кнопку, зависит от значения свойства CommandName этой кнопки.Например, если для свойства CommandName кнопки задано значение edit, то при нажатии этой кнопки вызывается событие EditCommand.Если свойство CommandName имеет значение delete, то при нажатии кнопки вызывается событие DeleteCommand, и т. д.

Элемент управления DataList также поддерживает событие ItemCommand, возникающее при нажатии кнопки, не имеющей заранее заданной команды, такой как edit или delete.Это событие можно использовать для настройки функциональности путем установки для свойства CommandName кнопки требуемого значения и последующей проверки его в обработчике событий ItemCommand.

Редактирование и выделение элементов

Пользователям может быть позволено редактировать отдельные элементы в элементе управления.Другие элементы управления данных, например GridView, DetailsView и FormView, могут взаимодействовать с элементами управления источника данных для поддержки автоматического обновления и разбиения по страницам.Напротив, элемент управления DataList не может автоматически использовать преимущества возможностей обновления элементов управления источника данных, автоматического разбиения по страницам или сортировки.Для выполнения обновлений, разбиения по страницам и сортировки с помощью элемента управления DataList необходимо выполнить обновление задачи в написанном коде.

Прежде всего, необходимо создать шаблон EditItemTemplate, предоставляющий макет и элементы управления для редактирования.Необходимо также предоставить пользователю способ сообщить программе, что он хочет редактировать элемент.Обычно это делается путем последовательного включения кнопки в шаблон элемента (и в свойство AlternatingItemTemplate, если оно используется) и задания для свойства CommandName этой кнопки значения edit.После нажатия на кнопку элемент управления DataList автоматически вызывает событие EditCommand.В коде для обработчика этого события следует перевести элемент в режим редактирования, отображающий шаблон EditItemTemplate.

EditItemTemplate обычно включает кнопки, которые дают пользователям возможность сохранять внесенные изменения или отменять их (например кнопки Обновить и Отмена).Эти кнопки действуют аналогично кнопке Правка — они посылают предварительно определенное командное сообщение (update или cancel) в элемент управления DataList, который вызывает событие UpdateCommand или CancelCommand, на которое можно отвечать соответствующим образом.

Аналогично происходит выделение элемента с помощью события SelectedIndexChanged.Следует добавить кнопку ItemTemplate и задать для ее свойства CommandName значение select.Затем нужно написать обработчик событий SelectedIndexChanged.Событие SelectedIndexChanged происходит, когда пользователь нажимает кнопку Выбрать.





Дата публикования: 2015-02-03; Прочитано: 677 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.016 с)...