it-swarm.com.ru

Повторитель, ListView, DataList, DataGrid, GridView ... Какой выбрать?

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

111
mattruma

Это действительно о том, что вы пытаетесь достичь

  • Gridview - ограничен в дизайне, работает как HTML-таблица. Больше встроенных функций, таких как редактирование/обновление, страница, сортировка. Много накладных расходов.

  • DataGrid - старая версия Gridview. GridView - это суперсетка данных.

  • Datalist - более настраиваемая версия Gridview. Также есть некоторые накладные расходы. Больше ручной работы, так как вы должны разработать ее самостоятельно.

  • ListView - новый Datalist :). Почти гибрид таблицы данных и gridview, где вы можете использовать пейджинг и встроить Gridview, как функциональность, но при этом иметь свободу дизайна. Один из новых элементов управления в этой семье

  • Повторитель - очень легкий вес. Нет встроенных функций, таких как верхние и нижние колонтитулы. Имеет наименьшие накладные расходы.

143
WebDude

Все остальные ударили: это зависит.

Теперь для некоторых конкретных указаний (в дополнение к превосходному ответу WebDude выше) ...

Ваш дизайн вписывается в естественную электронную таблицу или сетку данных? GridView.

Вам нужно отобразить список или другое отформатированное представление данных, возможно, с верхними и нижними колонтитулами, и, возможно, с определенными элементами управления и/или форматированием для каждой записи данных? (Например, настраиваемые ссылки, возможно, LinkButtons или специальные элементы управления редактированием?) Этот дисплей специально не естественным образом вписывается в электронную таблицу или сетку? ListView

Если вы соответствуете всем критериям ListView, но, естественно, поместитесь в сетку, вы можете рассмотреть DataList.

Я выбираю Repeater, когда мне просто нужны некоторые базовые данные, повторяемые с некоторыми битами нестандартного дизайна, без верхних и нижних колонтитулов, Хороший и чистый.

27
John Rudy

Вид разметки

Объявление следующего примера кода возможно для всех 3 (ListView, DataList, Repeater)

<asp:ListView runat="server" OnItemCommand="Unnamed1_ItemCommand">
<ItemTemplate> <%# Eval("Name")%>    </ItemTemplate>
<asp:ListView>

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

ListView (обратите внимание на редактирование, группу, вставку, макет)

  • AlternatingltemTemplate
  • EditltemTemplate
  • EmptyDataTemplate
  • EmptyltemTemplate
  • GroupSeparatorTemplate
  • GroupTemplate
  • lnsertltemTemplate
  • ItemSeparatorTemplate
  • ItemTemplate
  • LayoutTemplate
  • SelectedltemTemplate

DataList (обратите внимание на пары стилей)

  • AlternatingltemStyle
  • AlternatingltemTemplate
  • EditltemStyle
  • EditltemTemplate
  • FooterStyle
  • FooterTemplate
  • HeaderStyle
  • HeaderTemplate
  • ItemStyle
  • ItemTemplate
  • SelectedltemStyle
  • SelectedltemTemplate
  • SeparatorStyle
  • SeparatorTemplate

Repeater

  • AlternatingltemTemplate
  • FooterTemplate
  • HeaderTemplate
  • ItemTemplate
  • SeparatorTemplate

Просмотр кода (расширенный просмотр)

CompositeDataBoundControl :

посмотрите следующую иерархию классов (и связанные с ними элементы управления).

эти элементы управления содержат другие элементы управления asp.net в своих шаблонах для отображения связанных данных пользователю

The CompositeDataBoundControl classes(and related controls)

Некоторые описания для лучшего разъяснения

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

Элемент управления ListView также использует шаблоны для отображения данных. Однако он поддерживает множество дополнительных шаблонов, которые позволяют использовать больше сценариев при работе с вашими данными. Эти шаблоны включают в себя LayoutTemplate, GroupTemplate, ItemSeparatorTemplate .

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

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

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

Элемент управления DataList не использует автоматически элемент управления источником данных для редактирования данных. Вместо этого он предоставляет командные события , в которых вы можете написать свой собственный код для этих сценариев. Чтобы включить эти события, вы добавляете элемент управления Button в один из шаблонов и задаете для свойства CommandName кнопки ключевое слово edit, delete, update или cancel. Затем соответствующее событие вызывается элементом управления DataList.

Управление повторителем

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

Элемент управления Repeater является доступным только для чтения шаблоном. То есть он поддерживает только ItemTemplate. Он неявно поддерживает редактирование, вставку и удаление. Вы должны рассмотреть один из других элементов управления, если вам нужна эта функция, в противном случае вам придется кодировать это самостоятельно для элемента управления Repeater.


Приведенные выше описания взяты из MCTS Exam 70-515 Разработка веб-приложений с использованием Microsoft.NET Framework 4.

DataGrid даже не упоминается в этой книге, его заменяют популярные GridView и на него приятно отвечают другие пользователи.

19
Iman Abidi

В самом деле! Я писал в блоге о различиях между инструменты данных ASP.NET 4. . По сути, представления сетки являются наиболее мощным способом представления табличной информации, тогда как элементы управления ListView предназначены для более сложного отображения повторяющихся данных. Если бы я давал советы новичку в ASP.NET, я бы сказал им изучать gridview наизнанку и сначала игнорировать другие элементы управления.

6
Andy Brown

Все сводится к тому, как вы хотите расположить ваши данные.

Если вам нужно управлять макетом (например, таблицы, CSS или что-то еще), используйте Repeater или ListView. Между ними ListView предоставляет гораздо больше событий и встроенных команд для редактирования, выбора, вставки. Дополнительно функциональность подкачки и группировки. Повторитель чрезвычайно прост, он повторяет макет с данными. Поскольку вы создаете макет вручную, Listview и Repeater требуют больше кода.

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

5
Joseph Daigle