Поделиться через


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

Обновлен: Ноябрь 2007

Элемент управления DetailsView может автоматически создавать строки из полей, предоставляемых источником данных. Кроме того, вместо автоматического создания строк можно явно задать коллекцию отображаемых строк. Тем не менее, можно столкнуться с ситуацией, в которой потребуется настроить отображение отдельной строки. В таком случае можно создать поле TemplateField для указания настраиваемого макета.

Создание шаблонов

Объект TemplateField позволяет задавать шаблоны, содержащие разметку и элементы управления для настройки макета и поведения строки в элементе управления DetailsView. Используя шаблон ItemTemplate, можно задать макет, используемый для отображения строки в элементе управления DetailsView. Чтобы задать настраиваемый макет, который будет использоваться при вставке новой строки данных пользователем, можно создать шаблон InsertItemTemplate. Чтобы указать настраиваемый макет, используемый при изменении строки данных пользователем, можно создать шаблон EditItemTemplate.

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

Привязка данных в шаблоне

В шаблоне можно привязать элементы управления к данным с помощью методов Eval и Bind. Метод Eval используется, когда элемент управления будет только отображать значения. Метод Bind используется, когда пользователи могут изменять значения данных, то есть в ситуации обновления данных. Метод Eval можно использовать в любом из шаблонов для отображения данных. Метод Bind используется в шаблоне с элементами управления, в которых пользователи могут изменять значения, например с элементами управления TextBox и CheckBox, или в шаблоне, позволяющем удалять записи. Дополнительные сведения см. в разделе Общие сведения о выражениях для привязки данных.

Пример

В следующем примере показана коллекция Fields элемента управления DetailsView. Коллекция содержит объект TemplateField, содержащий, в свою очередь, объекты ItemTemplate, InsertItemTemplate и EditItemTemplate. Для отображения даты в шаблон ItemTemplate включен элемент управления Label, использующий метод Eval. Для вставки или изменения даты другие шаблоны используют элемент управления Calendar, использующий метод Bind.

<Fields>                  
  <asp:BoundField DataField="EmployeeID" HeaderText="Employee ID" InsertVisible="False" ReadOnly="true"/>                    
  <asp:BoundField DataField="FirstName"  HeaderText="First Name"/>
  <asp:BoundField DataField="LastName"   HeaderText="Last Name"/>                    
  <asp:TemplateField HeaderText="Birth Date">
    <ItemTemplate> 
      <asp:Label ID="BirthDateLabel" Runat="Server" 
                 Text='<%# Eval("BirthDate", "{0:d}") %>' />
    </ItemTemplate>
    <InsertItemTemplate>
      <asp:Calendar ID="InsertBirthDateCalendar" Runat="Server"
                    SelectedDate='<%# Bind("BirthDate") %>' />
    </InsertItemTemplate>
    <EditItemTemplate>
      <asp:Calendar ID="EditBirthDateCalendar" Runat="Server"
                    VisibleDate='<%# Eval("BirthDate") %>'
                    SelectedDate='<%# Bind("BirthDate") %>' />
    </EditItemTemplate>
  </asp:TemplateField>                    
</Fields> 
<Fields>                  
  <asp:BoundField DataField="EmployeeID" HeaderText="Employee ID" InsertVisible="False" ReadOnly="true"/>                    
  <asp:BoundField DataField="FirstName"  HeaderText="First Name"/>
  <asp:BoundField DataField="LastName"   HeaderText="Last Name"/>                    
  <asp:TemplateField HeaderText="Birth Date">
    <ItemTemplate> 
      <asp:Label ID="BirthDateLabel" Runat="Server" 
                 Text='<%# Eval("BirthDate", "{0:d}") %>' />
    </ItemTemplate>
    <InsertItemTemplate>
      <asp:Calendar ID="InsertBirthDateCalendar" Runat="Server"
                    SelectedDate='<%# Bind("BirthDate") %>' />
    </InsertItemTemplate>
    <EditItemTemplate>
      <asp:Calendar ID="EditBirthDateCalendar" Runat="Server"
                    VisibleDate='<%# Eval("BirthDate") %>'
                    SelectedDate='<%# Bind("BirthDate") %>' />
    </EditItemTemplate>
  </asp:TemplateField>                    
</Fields> 

См. также

Основные понятия

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

Общие сведения об элементах управления источниками данных

Ссылки

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