Доступ к данным с помощью элементов управления источником данных (DataSource) в ASP.NET 2.0 - Применяем двустороннюю привязку к данным

ОГЛАВЛЕНИЕ


Применяем двустороннюю привязку к данным

Существует два способа указать двустороннюю привязку к данным: вручную, указав ее посредством декларативного синтаксиса страницы, либо используя диалоговое окно Edit DataBindings (Редактирование привязки данных). Давайте исследуем оба подхода. Для того чтобы ввести ее, используя дизайнер (Designer), откройте интерфейс редактирования шаблонов (Edit Templates) и  выберите соответствующий шаблон. Для получения информации должны быть элементы сбора пользовательского ввода. Это может быть TextBox, DropDownList либо CheckBox. Мы хотим использовать двустороннюю привязку к данному элементу управления (и не на элементах управления валидацией либо элементах в шаблоне, которые не собирают пользовательский ввод). Из смарт-тега данного элемента управления нажмите ссылку "Edit DataBindings" (Редактировать привязки данных). Это откроет следующее диалоговое окно.


Свойства привязки элемента управления перечислены слева. Выберите одно, и затем выберите поле справа, к которому вы хотите привязать. В качестве альтернативы вы можете ввести привязку вручную в текстовом поле Custom binding. Используйте следующий синтаксис: Bind("DataField_Name").

Диалоговое окно "Edit DataBindings" просто внедряет соответствующую разметку двусторонней привязки в декларативный синтаксис элемента управления. Вы можете ввести ее вручную вместо того, чтобы использовать диалоговое окно Edit DataBindings. К примеру, для того чтобы привязать свойство Text текстового элемента ProductName к полю ProductName используйте следующий декларативный синтаксис в EditItemTemplate элемента TemplateField:

<EditItemTemplate>
   <asp:TextBox ID="ProductName" runat="server" Text='<%# Bind("ProductName") %>'></asp:TextBox>
</EditItemTemplate>

При вводе данного синтаксиса вручную важно не забыть отделить значение свойства при помощи апострофов вместо кавычек, поскольку кавычки используются в пределах выражения Bind. То есть, я использую Text='<%# Bind("ProductName") %>' вместо Text="<%# Bind("ProductName") %>".