Repeater、ListView、DataList、DataGrid、GridView…どれを選択しますか?


111

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


2
この質問の決定的な答えは1つだけです。あなたは何をしようとしているのですか?
Tomalak 2008

@Tomalakデータのリストを表示しているだけです...通常はリピーターを使用しますが、他のものを使用することの長所/短所を確認したいと考えています。
mattruma 2008

回答:


144

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

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

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

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

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

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


12
この回答はまだ最新ですか?(2008年から2013年まで)
ミシェルエアーズ

3
@Michel Repeaterは、.NET 4.5以降、強く型付けされました。私はそれがとても好きです。
Evgeni Nabokov

1
@MichelAyres私は一般的には「はい」と言います。MSは2008年以降Webフォームにいくつかの更新を行っていますが、回答で伝えられている一般的な考え方は同じです。
akousmata 2014

2
うーん..「ヘッダー、フッターのような組み込みの機能はありません」ええと、<table>や</ table>タグのようなものを入れたい場合は、HeaderTemplateとFooterTemplate ..があります。
2015

28

他の誰もがそれを打った:それは依存する。

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

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

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

ListViewのすべての基準を満たしていても、当然グリッドに収まる場合は、DataListを検討することができます。

いくつかのカスタムデザインビットで反復された基本的なデータが必要なだけで、ヘッダーもフッターもない、すてきでクリーンなリピーター選びます。


19

マークアップビュー

次のサンプルコードの宣言は、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
  • ヘッダースタイル
  • ヘッダーテンプレート
  • ItemStyle
  • ItemTemplate
  • SelectedltemStyle
  • SelectedltemTemplate
  • SeparatorStyle
  • SeparatorTemplate

リピータ

  • AlternatingltemTemplate
  • FooterTemplate
  • ヘッダーテンプレート
  • ItemTemplate
  • SeparatorTemplate

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

CompositeDataBoundControl

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

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

CompositeDataBoundControlクラス(および関連するコントロール)

より明確にするためのいくつかの説明

ListViewコントロール

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

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

DataListコントロール

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

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

リピーターコントロール

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

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


上記の説明は、Microsoft.NET Framework 4を使用したMCTS試験70-515 Webアプリケーション開発からの抜粋です。

DataGridはこの本では言及されておらず、人気のあるGridViewに置き換えられており、他のユーザーがうまく回答しています


1
すべての答えの素晴らしい説明!
Ali007 2014年

私の良さ...完全な答えの定義。よくやった。
user3308043 14年

6

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


自分のブログにコメントを追加するだけです。2〜3年後、私が実際にお勧めするのは、代わりにASP.NET MVCを学習することです。これにより、質問が無関係になります(グリッドからのイベントの発生も簡単になります)。しかし、それは長い学習曲線です!
アンディブラウン

5

すべては、データをどのようにレイアウトしたいかにかかっています。

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.