Asp.Netにおけるリストデータバインドコントロールの概要


Asp.Netにおいてリストデータを表示するためのコントロールには、Repeater、DataList、DataGridの3種類がある.
DataGridは柔軟性が高く、豊富なイベントを内蔵しており、ページング、編集、ソートなどの特性を提供しており、表の操作も非常に便利であり、多くのスタイルがオプションであり、多くの機能と特性を持っているため、開発速度が速く、導入が容易である.しかし、パフォーマンスはそれほど高くなく、操作のたびにサーバに戻ります.主にソート、ページング、編集、および複数のカラムの表示に使用され、パフォーマンスの要件はそれほど高くありません.一般的にデータ・ソースはDateSetです.
DataListはDataGridと同様に強力なテンプレート特性を持ち、データの編集をサポートし、DataGridよりも性能がよく、開発サイクルが相対的にDataGridより長く、DataGridのエディタがなく、ページングとソートを実現するのが難しい点が不足している.主に単列のデータリスト、高性能のカスタムデータテーブルに適用されます.
Repeaterは完全にHTMLで表示され、より自由で柔軟で、パフォーマンスは3つの表示コントロールの中で最も高い.しかし、編集、ページング、ソートはサポートされず、ほとんど特性がありません.開発サイクルが最も長い.主に、パフォーマンスと柔軟性の高いデータの表示に使用されます.
DataGridを使用する際に注意すべき問題
DataGridコントロールには重い属性AutoGenerateColumnsがあります.デフォルトではこの属性の値はtrueです.彼がtrueの場合、バインドされたテーブルのすべてのフィールドが表示されますが、実際に適用する場合は、目的のフィールドだけを表示する必要があります.この場合、AutoGenerateColumns属性の値をfalseに設定し、コントロールに列を表示するようにカスタマイズできます.自動生成カラムに設定した場合は、DataGridで表示カラムを指定しないでください.そうしないと、重複カラムが発生します.
DataGridの非テンプレート列でコントロールを探すにはdatagriditemを使用します.Cells[いくつ目のセル].Controls[いくつかのコントロール]このときの下付き文字は0から始まるが、テンプレート列を使用する場合、Controlのindexはすべて1つ追加しなければならない.Control[0]はLiteralControlであり、値が空でスペースに相当するからだ.この場合はdatagriditemを採取するのが望ましい.findcontrol[「コントロール名」]で取得します.
DataGridにボタン列の削除を追加した場合は、削除するデータ項目が最後の項目であるか、最後の項目であるか、現在のページが最初のページであるか、最初のページでない場合は現在のインデックスを1つ減らす必要があります.DataGridのdeleteCommandイベントに次のコードを追加して実装します.
if(this.datagrid.items.count= =1)
{
     if(this.DataGrid.CurrentPageIndex!=0)
     {
        This.DataGrid.CurrentPageIndex=this.DataGrid.CurrentPageIndex-1;
     }
}

1つのレコードを削除するときに、より人間的になるために、削除ボタンをクリックすると、レコードを削除するかどうかを確認するダイアログボックスが表示されます.この機能は、DataGridコントロールのItemDataBoundイベントに次のコードを追加することで実現され、クライアント側で実行されます.

Switch(e.Item.ItemType)
{
    Case ListItemType.Item;
    Case ListIetmType.EditItem;
    Case ListItemType.AlternatingItem;
    LinkButton lb=(LinkButton)e.Item.Cells[].Controls[0];
    Lb.Attributs.Add(“onclick”,”return confirm(‘         ?’)”);
    Break;
}

上のコードの最後から2行目のreturnは重要で、必ず削除できません.そうしないと、ダイアログボックスがポップアップされると、「OK」をクリックしても「キャンセル」をクリックしても、選択したレコードが削除されます.