web-dev-qa-db-ja.com

Repeater、ListView、DataList、DataGrid、GridView ...どちらを選択しますか?

さまざまなコントロールから選択できます! ASP.NETでデータを表示するために使用するコントロールを決定するためのベストプラクティスは何ですか?

111
mattruma

それは本当にあなたが達成しようとしていることについてです

  • Gridview-デザインに制限があり、htmlテーブルのように機能します。編集/更新、ページ、ソートなどの組み込み機能の詳細。たくさんのオーバーヘッド。

  • DataGrid-グリッドビューの古いバージョン。 gridviewはスーパーデータグリッドです。

  • データリスト-Gridviewのよりカスタマイズ可能なバージョン。また、いくつかのオーバーヘッドがあります。自分で設計する必要があるため、より多くの手作業が必要です。

  • ListView-新しいデータリスト:)。データリストとグリッドビューのほぼハイブリッドで、ページングを使用して機能のようなグリッドビューでビルドできますが、設計の自由があります。このファミリの新しいコントロールの1つ

  • リピーター-非常に軽量。ヘッダー、フッターなどの組み込み機能はありません。オーバーヘッドが最小です。

144
WebDude

他の誰もがヒットしました:それは依存します。

ここで、いくつかの具体的なガイダンス(上記のWebDudeの優れた答えに基づいて拡張)について...

デザインは、データの自然なスプレッドシートまたはグリッドビューに適合していますか? GridView

おそらくヘッダーとフッターを使用して、おそらくデータの各レコードの特定のコントロールやフォーマットを使用して、データのリストまたはその他のフォーマットされたビューを表示する必要がありますか? (EG、カスタマイズされたリンク、おそらくLinkBut​​tons、または特定の編集コントロール?)この表示は、スプレッドシートまたはグリッドビューに自然にnot収まりますか? リストビュー

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

リピーター

  • AlternatingltemTemplate
  • FooterTemplate
  • HeaderTemplate
  • ItemTemplate
  • SeparatorTemplate

コードビュー(詳細ビュー)

CompositeDataBoundControl

次のクラス階層(および関連するコントロール)を見てください。

これらのコントロールは、バインドされたデータをユーザーに表示するためにテンプレート内の他のasp.netコントロールをホスト

The CompositeDataBoundControl classes(and related controls)

より明確な説明のためのいくつかの説明

リストビューコントロール

ListViewコントロールは、データの表示にもテンプレートを使用します。ただし、データを操作する際により多くのシナリオを可能にする多くの追加テンプレートをサポートしています。これらのテンプレートには、LayoutTemplate、GroupTemplate、ItemSeparatorTemplateが含まれます。

ListViewコントロール(DataListやRepeaterとは異なり)も、データソースコントロールを使用してデータを編集、挿入、削除する機能を暗黙的にサポートします。これらのシナリオごとに個別のテンプレートを定義できます。

DataListコントロール

DataListコントロールは機能しますRepeaterのようにコントロール。データセットの各行に対してデータを繰り返し、定義されたテンプレートに従ってこのデータを表示します。 ただし、テンプレートで定義されたデータをさまざまなHTML構造内にレイアウトします。これには、水平または垂直レイアウトのオプション、およびそれも許可しますが含まれ、データをフローまたはテーブルレイアウトとして繰り返す方法を設定します。

DataListコントロールは、データソースコントロールを使用してデータを編集することはありません。代わりに、コマンドイベントを提供するで、これらのシナリオ用の独自のコードを記述できます。これらのイベントを有効にするには、Buttonコントロールをテンプレートの1つに追加し、ボタンのCommandNameプロパティを編集、削除、更新、またはキャンセルのキーワードに設定します。次に、DataListコントロールによって適切なイベントが発生します。

リピーターコントロール

Repeaterコントロールは、テンプレートを使用してカスタムバインディングを定義します。ただし、データを個別のレコードとして表示しません。代わりに、テンプレートで指定したとおりにデータ行を繰り返します。これにより、データの単一の行を作成し、ページ全体で繰り返すことができます。

Repeaterコントロールは、読み取り専用テンプレートです。つまり、ItemTemplateのみをサポートします。編集、挿入、削除を暗黙的にサポートしません。この機能が必要な場合は、他のコントロールのいずれかを検討する必要があります。それ以外の場合は、リピーターコントロールに対してこれを自分でコーディングする必要がありますです。


上記の説明はMCTS Exam 70-515 Webアプリケーション開発with Microsoft.NET Framework 4本からのものです。

DataGridはこの本では言及されていませんが、人気のあるGridViewsに置き換えられ、他のユーザーからうまく回答されています

19
Iman Abidi

確かに! ASP.NET 4.0データツール の違いについてブログに書いています。基本的に、グリッドビューは表形式の情報を表示する最も強力な方法ですが、リストビューコントロールは繰り返しデータのより複雑な表示用です。 ASP.NETの初心者にアドバイスを与えている場合は、グリッドビューを徹底的に学習し、他のコントロールを無視するように指示します。

6
Andy Brown

すべては、データのレイアウト方法にかかっています。

RepeaterまたはListViewを使用する場合、レイアウトを制御する必要がある場合(テーブルとCSSとの比較など)。 2つの間で、ListViewには、編集、選択、挿入のためのより多くのイベントと組み込みコマンドがあります。さらにページングおよびグループ化機能。 Repeaterは非常にシンプルで、データを使用してレイアウトを繰り返します。手作業でレイアウトを構築しているため、ListviewとRepeaterにはさらに多くのコードが必要です。

GridViewは更新されたDataGridであるため、DataGridを使用する理由はほとんどありません。 GridViewは、標準のASP.NETデータソースに接続すると非常にうまく機能しますが、多くのレイアウトルールを持つ表形式レイアウトに制限されます。 GridViewでは、組み込みレイアウトを使用しているため、必要なコードが少なくなります。

5
Joseph Daigle