webentwicklung-frage-antwort-db.com.de

Repeater, ListView, DataList, DataGrid, GridView ... Welche zur Auswahl?

So viele verschiedene Steuerelemente zur Auswahl! Welche bewährten Methoden zur Bestimmung des Steuerelements für die Anzeige von Daten in ASP.NET werden empfohlen?

111
mattruma

Es geht wirklich darum, was Sie erreichen wollen

  • Gridview - Eingeschränktes Design, funktioniert wie eine HTML-Tabelle. Weitere integrierte Funktionen wie Bearbeiten/Aktualisieren, Seite, Sortieren. Viel Aufwand.

  • DataGrid - Alte Version der Gridview. Ein Gridview ist ein super Datagrid.

  • Datalist - anpassbarere Version der Gridview. Hat auch etwas Overhead. Mehr Handarbeit, als Sie selbst gestalten müssen.

  • ListView - der neue Datalist :). Fast eine Mischung aus Datalist und Gridview, bei der Sie Paging verwenden und Gridview-ähnliche Funktionen erstellen können, aber die Freiheit des Designs haben. Eine der neuen Steuerungen in dieser Familie

  • Repeater - Sehr leicht. Keine eingebauten Funktionen wie Kopf- und Fußzeilen. Hat den geringsten Overhead.

144
WebDude

Alle anderen haben es geschafft: Es kommt darauf an.

Nun zu einer konkreten Anleitung (Erweiterung der hervorragenden Antwort von WebDude oben) ...

Passt Ihr Design in eine natürliche Tabellen- oder Rasteransicht der Daten? GridView.

Müssen Sie eine Liste oder eine andere formatierte Ansicht von Daten anzeigen, möglicherweise mit Kopf- und Fußzeilen und möglicherweise mit spezifischen Steuerelementen und/oder Formatierungen für jeden Datensatz? (ZB benutzerdefinierte Links, möglicherweise LinkButtons oder bestimmte Bearbeitungssteuerelemente?) Passt diese Anzeige speziell nicht auf natürliche Weise in eine Tabellenkalkulations- oder Rasteransicht? ListView

Wenn Sie alle Kriterien von ListView erfüllen, aber natürlich in ein Raster passen, können Sie DataList in Betracht ziehen.

Ich greife zu Repeater, wenn ich nur einige grundlegende Daten benötige, die mit einigen benutzerdefinierten Design-Bits iteriert wurden, keine Kopfzeilen, keine Fußzeilen, nett und sauber.

27
John Rudy

Markup-Ansicht

Das Deklarieren des folgenden Beispielcodes ist für alle 3 (ListView, DataList, Repeater) möglich.

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

in den folgenden Listen sehen Sie die verfügbaren Vorlagen und Optionen für jede von ihnen und sehen die Unterschiede für sich

ListView (Bearbeiten, Gruppieren, Einfügen, Layout beachten)

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

DataList (beachten Sie die Style-Paare)

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

Repeater

  • AlternatingltemTemplate
  • FooterTemplate
  • HeaderTemplate
  • ItemTemplate
  • SeparatorTemplate

Codeansicht (erweiterte Ansicht)

CompositeDataBoundControl:

sehen Sie sich die folgende Klassenhierarchie (und die zugehörigen Steuerelemente) an.

diese Steuerelemente hosten andere asp.net-Steuerelemente in ihren Vorlagen, um dem Benutzer gebundene Daten anzuzeigen

The CompositeDataBoundControl classes(and related controls)

Einige Beschreibungen zur besseren Verdeutlichung

Das ListView-Steuerelement

Das ListView-Steuerelement verwendet auch Vorlagen für die Anzeige von Daten. Es werden jedoch viele zusätzliche Vorlagen unterstützt, die beim Arbeiten mit Ihren Daten mehr Szenarien ermöglichen. Zu diesen Vorlagen gehören LayoutTemplate, GroupTemplate, ItemSeparatorTemplate.

Das ListView-Steuerelement ( im Gegensatz zu DataList und Repeater) unterstützt implizit auch die Möglichkeit, Daten mithilfe eines Datenquellensteuerelements zu bearbeiten, einzufügen und zu löschen. Sie können für jedes dieser Szenarien individuelle Vorlagen definieren.

Das DataList-Steuerelement

Das DataList-Steuerelement funktioniert wie der Repeater. Es wiederholt Daten für jede Zeile in Ihrem Datensatz und zeigt diese Daten gemäß Ihrer definierten Vorlage an. Allerdings, es legt die in der Vorlage definierten Daten in verschiedenen HTML-Strukturen an. Dies beinhaltet Optionen für horizontales oder vertikales Layout und es erlaubt Ihnen auch festzulegen, wie die Daten wiederholt werden sollen, als Fluss- oder Tabellenlayout.

Das DataList-Steuerelement verwendet zum Bearbeiten von Daten nicht automatisch ein Datenquellensteuerelement. Stattdessen liefert es Befehlsereignisse, in denen Sie Ihren eigenen Code für diese Szenarien schreiben können. Um diese Ereignisse zu aktivieren, fügen Sie einer der Vorlagen ein Button-Steuerelement hinzu und setzen die CommandName-Eigenschaft der Schaltfläche auf das Schlüsselwort Bearbeiten, Löschen, Aktualisieren oder Abbrechen. Das entsprechende Ereignis wird dann vom DataList-Steuerelement ausgelöst.

Die Repeater-Steuerung

Das Repeater-Steuerelement verwendet auch Vorlagen zum Definieren der benutzerdefinierten Bindung. Es werden jedoch keine Daten als einzelne Datensätze angezeigt. Stattdessen werden die in Ihrer Vorlage angegebenen Datenzeilen wiederholt. Auf diese Weise können Sie eine einzelne Datenzeile erstellen und diese auf Ihrer Seite wiederholen.

Das Repeater-Steuerelement ist eine schreibgeschützt Vorlage. Das heißt, es wird nur das ItemTemplate unterstützt. Das Bearbeiten, Einfügen und Löschen wird nicht implizit unterstützt. Sie sollten eines der anderen Steuerelemente in Betracht ziehen, wenn Sie diese Funktionalität benötigen, andernfalls Sie müssen dies selbst codieren für das Repeater-Steuerelement.


Die obigen Beschreibungen stammen aus dem Buch MCTS Exam 70-515 Web Applications Development mit Microsoft.NET Framework 4.

DataGrid wird in diesem Buch nicht einmal erwähnt, sondern durch beliebte GridViews ersetzt und von anderen Benutzern gut beantwortet

19
Iman Abidi

Tatsächlich! Ich habe über die Unterschiede zwischen den ASP.NET 4.0-Datentools gebloggt. Grundsätzlich sind Rasteransichten die leistungsstärkste Methode zur Darstellung tabellarischer Informationen, während ListView-Steuerelemente für die komplexere Anzeige wiederholter Daten vorgesehen sind. Wenn ich einem ASP.NET-Neuling Ratschläge geben würde, würde ich ihn bitten, die Rasteransichten von innen nach außen zu lernen und die anderen Steuerelemente zunächst zu ignorieren.

6
Andy Brown

Alles hängt davon ab, wie Sie Ihre Daten gestalten möchten.

Wenn Sie das Layout steuern müssen (wie Tabellen gegenüber CSS gegenüber was auch immer), wenn Sie einen Repeater oder ListView verwenden. Dazwischen bietet ListView viele weitere Ereignisse und integrierte Befehle zum Bearbeiten, Auswählen und Einfügen. Zusätzliche Paging- und Gruppierungsfunktionen. Ein Repeater ist extrem einfach, er wiederholt ein Layout mit den Daten. Da Sie das Layout von Hand erstellen, benötigen Listview und Repeater mehr Code.

GridView ist ein aktualisiertes DataGrid, sodass es kaum einen Grund gibt, DataGrid zu verwenden. GridView funktioniert sehr gut, wenn es mit Standard-ASP.NET-Datenquellen verbunden ist, beschränkt Sie jedoch auf ein tabellarisches Layout mit vielen Layoutregeln. GridView erfordert weniger Code, da Sie ein integriertes Layout verwenden.

5
Joseph Daigle