Повторитель, ListView, DataList, DataGrid, GridView ... Какой выбрать? - PullRequest
111 голосов
/ 26 сентября 2008

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

Ответы [ 5 ]

143 голосов
/ 26 сентября 2008

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

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

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

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

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

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

27 голосов
/ 26 сентября 2008

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

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

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

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

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

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

19 голосов
/ 18 октября 2013

Просмотр разметки

Объявление следующего примера кода возможно для всех 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

Ретранслятор

  • 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. Это включает в себя варианты для горизонтального или вертикального layout, и также позволяет установить, как данные должны повторяться, как макет потока или таблицы.

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

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

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

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


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

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

6 голосов
/ 11 ноября 2011

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

5 голосов
/ 26 сентября 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...