Datagridコントロール
Datagrid Controlを使用すると、リッチデータソース形式のリストを生成できます。さらに、他の操作との選択項目もサポートしています。
このセクションの4つの例は、タイトル情報(タイトル、タイトルID、著者、価格、公開日)を含む表を使用します。すべてのデータは、titlesdb.xmlのXMLで維持されます。このテーブルのコンテンツを表すページを確立し、本を選択するとき、これらの例は増分方式に従います。コードリストには、前の例に組み込まれたサンプルによって行われた変更を示す黒体のテキストが含まれています。
titlesdb.xmlからのテスト:
<root>
<schema id = documentlement targetnamespace =
xmlns = http://www.w3.org/1999/xmlschema
xmlns:msdata = urn:schemas-microsoft-com:xml-msdata>
<要素名=表>
<complexType content = ElementSonly>
<要素name = title_id type = string> </element>
<要素name = title type = string> </element>
<要素name = au_name type = string> </element>
<要素名=価格msdata:datatype = system.currency
minoccurs = 0
type = string> </element>
<要素名= pubdate type = timeinstant> </element>
</complexType>
<nique name = titleconstraint msdata:primarykey = true>
<selector> </selector>
<field> title_id </field>
</unique>
</要素>
</schema>
<DocumentLement>
<title>
<title_id> bu1032 </title_id>
<title>忙しいエグゼクティブのデータベースガイド</title>
<um_name> marjorie green </au_name>
<価格> 19.99 </rish>
<Pubdate> 1991-06-12T07:00:00 </pubdate>
</title>
弾性
</documentlement>
</root>
典型的なWebアプリケーションでは、最大のスケーラビリティとパフォーマンスを取得するために、Webサービスまたはビジネスオブジェクトを使用してデータにアクセスする可能性があります。これらの例を簡素化し、データアクセスの代わりにDatagridの使用に焦点を合わせるために、アプリケーションが開始されるときにデータをロードすることを選択し、ASPアプリケーション状態でASAX Showにあります。
Global.Asaxからのトランク:
public void application_onstart(){){)
FileStream FS = null;
データセットds = null;
試す {
fs = new fileStream(server.mappath(titlesdb.xml)、filemode.open、
fileaccess.read);
ds = new DataSet();
// XMLファイルのデータをデータセットにロードします
ds.readxml(fs);
} ついに {
if(fs!= null){
fs.close();
fs = null;
}
}
//データセットを高速でアプリケーション状態までチェストレートして、単一ページで使用できるようにします
Application [titlesdataset] = ds;
}
datagrid1
Datagrid1は、Datagridの基本的な使用法を示しています。これは、コントロールが最小ユーザーコードを使用してリッチな関数を生成する方法を説明しています。
イチジク
datagrid1.aspxから挿入:
<%@ページ言語= c#src = datagrid.cs継承= samples.datagridpage%>
弾性
<asp:datagrid runat = server id = titlesgrid>
</asp:datagrid>
上記の.aspxファイルは、datagridコントロールの属性のない属性のないステートメントを示しました。
datagrid.cs:
名前空間サンプル{
弾性
public class datagridpage:page {
保護されたDatagrid TitleSgrid;
public Icollection getTitlesList(){
//アプリケーション状態の高速度キャッシュのデータセットからタイトルリストを退屈させます。
Dataset TitleDataset =(dataset)Application [titlesdataset];
if(titlesdataset!= null){
return titledataset.tables [title] .defaultView;
}
それ以外 {
nullを返します。
}
}
private void loadTitlesgrid(){){)
//データベースからデータを検索します
ICOLLECTION TITLESLIST = GETTITLESLIST();
//コントロールのデータソースを設定します
titlesgrid.datasource = titleslist;
//このデータソースを使用してプロジェクトを構築するようにします
titlesgrid.databind();
}
保護されたオーバーライドvoidオーバーロード(eventargs e){{{
base.onload(e);
if(!ispostback){
//このページを初めて参照してください
LoadTitlesGrid();
}
}
}
}
.csファイルには、このページに使用されるコードが含まれています。このコードは、datalist1の例で使用されているコード関数と同じです。このページの最初のリクエストでは、データを取得する前にデータを取得し、コントロールのデータソースプロパティを設定するオンラインメソッドをカバーします。これにより、Datagridはプロジェクトを作成します。これは、テーブル内の必要な行です。処理を返すプロセスでは、Datagridはプロジェクトをステータスから再作成しました(この状態には、最後のリクエストで保存されたセル含有量が含まれます)。
この例は、Datagridコントロールの自動発電機プロパティの機能を示しています。この属性のデフォルト値は真です。 Trueに設定すると、Datagridは反射を使用してデータソースとオブジェクトを確認し、各パブリック属性またはフィールドの列を作成します。この例では、コントロールは「タイトル」テーブルのすべての現在のフィールドを表します。この機能により、最小ユーザーコードのリストがデータソースのリストを迅速かつ簡単に生成できます。
自動列の各タイプはBoundColumnです。この列タイプは、それに関連付けられた属性値をウィンドウとして使用する必要がある文字列に変換します。
datagrid2
datagrid2は、.aspxファイルに設定された列で設定されたdatagridについて説明します。
図5。指定された列datagridを使用して生成された例
datagrid2.aspxからの抜粋:
<%@ページ言語= c#src = datagrid.cs継承= samples.datagridpage%>
弾性
<asp:datagrid runat = server id = titlesgrid
autogeneratecolumns = false>
<poperty name = columns>
<asp:boundcolumn headeltext = title datafield = title/>
<asp:boundcolumn headeltext =著者datafield = au_name/>
<asp:boundcolumn headertext =日付公開datafield = pubdate/>
<asp:boundcolumn headeltext = price datafield = price/>
</property>
</asp:datagrid>
この.aspxファイルは、ユーザーがセットした列を使用してDatagridコントロールを示しました。この例では、コードが不要なため、同じコードサポートファイルをdatagrid1と使用します。
DatagridのAutogenerAteColumnsプロパティは、コントロールが列を自動的に生成するのを防ぎ、テーブルに表示される列の定義に責任を負うようにするために偽造するように設定されています。
多くの利点があります:
列の順序を制御できます。ステートメントの順序でリストします。一方、自動列は、画像によって取得された順序で表されます。
列HeadTextプロパティを使用して、各列のヘッダーを指定できます。前の例では、ラベルヘッダーはフィールド名を示しますが、これは適切ではない場合があります。このモードでコントロールを使用する場合、Columbnsは他の設定可能な属性も提供します。
自動列のタイプは常にBoundColumnです。ユーザーが各列のタイプを制御できるように列セットを指定します。
datagrid3
Datagrid3は、視覚的なフォーマットとフォーマットを追加することにより、Datagrid2に構築されています。
図6。スタイルとフォーマットの属性を設定するDatagridによって生成された例
datagrid3.aspxからの抜粋:
<%@ページ言語= c#src = datagrid.cs継承= samples.datagridpage%>
弾性
<asp:datagrid runat = server id = titlesgrid
autogeneratecolumns = false
幅= 80%
backcolor =白
borderwidth = 1px borderStyle = solid cellpadding = 2 cellspacing = 0
bordercolor = tan
font-name = song style font-size = 8pt>
<poperty name = columns>
<asp:boundcolumn headeltext = title datafield = title/>
<asp:boundcolumn headeltext =著者datafield = au_name/>
<asp:boundcolumn headertext =日付公開データフィールド= pubdate
dataformatstring = {0:mmm yyyy}/>
<ASP:BoundColumn HeadElText = Price DataField =価格
dataformatstring = {0:c}>
<poperty name = itemstyle>
<ASP:tableItemstyle horizontalAlign = right/>
</property>
</asp:bounddcolumn>
</property>
<Poperty name = headstyle>
<ASP:TableItemStyle backcolor = darkred forecolor = white
font-black = true/>
</property>
<poperty name = itemstyle>
<ASP:TableItemStyle ForeColor = DarksLateBlue/>
</property>
<Poperty name = AlternatingItemStyle>
<ASP:TableItemstyle backcolor = beige/>
</property>
</asp:datagrid>
この.aspxファイルは、以前と同じDatagridコントロールステートメントを示し、さまざまなスタイルの属性を設定しました。これは、より魅力的な表現につながります。コードに変更を加える必要はなく、以前の例と同じ例でサポートされているコードの使用はまだありません。
WebControlから取得されるため、Datagrid Controlは幅、バックコラー、ボーダーシル、フォントnameなどのスタイル属性を継承します。さらに、Datagridは、テーブルに固有のCellPaddingなどの属性を提供します。これらの属性は、全体でコントロールをカスタマイズすることができます。
このステートメントには、ヘッダースタイルや交互の項目スタイルなど、プロジェクトスタイルのセットもいくつか表示されています。これらのスタイルは、対応するアイテムの外観を制御します。この例には、スタイルのスタイルが表示されていることに注意してください。代替プロジェクトは、一般的なプロジェクトの見通しと同じです。なぜなら、そのスタイルは、交互のItemStyleとItemstyleの組み合わせであるためです。最後に、この例では、右から調整価格の列のテキストを介した特定の列のスタイルについても説明しています。
Datagridでは、セル内のテキストコンテンツをフォーマットすることもできます。これは、BoundColumnのDataFormatStringプロパティ値を設定することで完了します。列はその形式を使用して、string.formatのセルコンテンツをフォーマットします。この属性は、フォーマットタイプ(日付や通貨など)を使用して、プリセットまたは任意のコンテンツに添付することができます。さらに、フォーマットはCultureInfoと現在のページの要求を考慮しているため、グローバリゼーションもサポートしています。指定された形式がない場合は、この値のToStringメソッドを使用します。
datagrid4
Datagrid4は、Selected DindIndexChangedイベントを処理して、Datagridで選択を使用する方法を説明しています。
図7。アイテムを含むデータグリッドを許可することによって生成された例
datagrid4.aspxからのテスト:
<%@ページ言語= c#src = datagrid4.cs継承= samples.datagrid4page%>
弾性
<asp:datagrid runat = server id = titlesgrid
autogeneratecolumns = false
幅= 80%
backcolor =白
borderwidth = 1px borderStyle = solid cellpadding = 2 cellspacing = 0
bordercolor = tan
font-name = song style font-size = 8pt
datakeyfield = title_id
onectedExchanged = onselectexchangededesgrid>
<poperty name = columns>
<asp:buttoncolumn text = select command = select/>
<asp:boundcolumn headeltext = title datafield = title/>
<asp:boundcolumn headeltext =著者datafield = au_name/>
<asp:boundcolumn headertext =日付公開データフィールド= pubdate
dataformatstring = {0:mmm yyyy}/>
<ASP:BoundColumn HeadElText = Price DataField =価格
dataformatstring = {0:c}>
<poperty name = itemstyle>
<ASP:tableItemstyle horizontalAlign = right/>
</property>
</asp:bounddcolumn>
</property>
<Poperty name = headstyle>
<ASP:TableItemStyle backcolor = darkred forecolor = white
font-black = true/>
</property>
<poperty name = itemstyle>
<ASP:TableItemStyle ForeColor = DarksLateBlue/>
</property>
<Poperty name = AlternatingItemStyle>
<ASP:TableItemstyle backcolor = beige/>
</property>
<poperty name = selectditemstyle>
<ASP:TableItemStyle backcolor = palegoldenrod font-bold = true/>
</property>
</asp:datagrid>
弾性
<asp:ラベルrunat = server id = selectinfolabel font-name = song style font-size = 8pt/>
.aspxファイルでは、DatagridのSelectedIndexChangedイベントイベントにイベント処理プログラムが登録されました。このインシデント処理プログラムは、コードサポートファイルに実装されています。列セットに「select」として追加されたボタンコラムにより、データグリッドは、各プロジェクトの選択ボタンを含む追加の列を表します。同時に、SelectedItemStyleが指定されています。このスタイルは、プロジェクトを視覚的に区別するために使用されます。最後に、DatagridのDatakeyfield属性が指定されています。このフィールドは、Datagrid Datakeysコレクションに配置され、コードサポートを備えたファイルで使用されます。
datagrid4.cs:
名前空間サンプル{
弾性
パブリッククラスdatagrid4page:page {
保護されたDatagrid TitleSgrid;
保護されたラベルSearchInfolabel;
public Icollection getTitlesList(){
//アプリケーション状態の高速度キャッシュのデータセットからタイトルリストを退屈させます。
Dataset TitleDataset =(dataset)Application [titlesdataset];
if(titlesdataset!= null){
return titledataset.tables [title] .defaultView;
}
それ以外 {
nullを返します。
}
}
private void loadTitlesgrid(){){)
//データベースからデータを検索します
ICOLLECTION TITLESLIST = GETTITLESLIST();
//コントロールのデータソースを設定し、その選択をリセットします。
titlesgrid.datasource = titleslist;
titlesgrid.selectdindex = -1;
//このデータソースを使用してプロジェクトを構築するためにコントロールを使用させる
titlesgrid.databind();
//選択したタイトル情報を更新します
updateselecttitalinfo();
}
保護されたオーバーライドvoidオーバーロード(eventargs e){{{
base.onload(e);
if(!ispostback){
//このページを初めて参照してください
LoadTitlesGrid();
}
}
// DatagridのOnSelectindIndindIndExexedイベントの処理
保護されたvoid onselectedIndindExchEdTitlesGrid(オブジェクト送信者、
eventargs e){
updateselecttitalinfo();
}
private void updateseSelecttivitiationfo(){{){
//選択したインデックスを取得します
int selindex = titlesgrid.selectex;
文字列selfieid = null;
文字列selectinfo;
if(selindex!= -1){{
//選択されたタイトルのキーフィールドを表示します
seltitleid =(string)titlesgrid.data [selindex];
selectioninfo =選択されたタイトルのID: + seltitleid;
}
それ以外 {
selectinfo =タイトルは現在選択されていません。
}
selectinfolabel.text = selectinfo;
}
}
}
この.csファイルには、選択したdindexchanedイベントを処理するロジックと、datagridで選択したタイトルのIDのロジックが含まれています。 Datagridは、プロジェクトに含まれるボタンによってトリガーされるコマンドイベントを処理します。標準のコマンド「Select」を認識します。これにより、SelectedIndexプロパティを変更し、このインシデントにユーザーに通知するコードを変更するようにトリガーします。
イベント処理プログラムを実装するプロセスでは、サンプルコードはupdateselecttitleinfoメソッドを呼び出します。この方法は、選択した本のタイトルに関する情報を表示する責任があります。より現実的なスキームでは、このIDを使用してページをリンクして、選択したタイトルの詳細を表示できます。
IDは、Datakeysコレクションにアクセスして取得されます。 Datakeyfield属性のために、コレクションが設定されています。通常、家庭で識別できるメインキーワードまたはその他のフィールドとして設定し、この情報をフォローアップデータベースクエリまたはフィルターデータのガイドラインとして使用します。
この例は、データソース内のオブジェクトのみに加えて、データソース内のオブジェクトを選択するなど、操作をさらにサポートする方法を示しています。 Datagridには、他のいくつかの機能(ソート、ページング、敷地のエディター、TemplateColumnsなど)のサポートが含まれています。ただし、これらの特定の機能は、この記事の議論の範囲を超えており、今後の記事で説明します。
リピーター、データリスト、またはデータグリッド?
リピーター、Datalist、およびDatagrid Control共有パブリックプログラミングモデル。同時に、各コントロールは特定のスキームに焦点を当てるように設計されています。このセクションでは、コントロール階層の機能と各コントロールの機能、および各コントロールを使用できる典型的なソリューションの例について説明します。
以下のクラス構造でわかるように、リピーターは小さくて軽いコントロールです。 ID属性やサブコントロールセットなど、基本制御クラスの関数のみを継承します。一方、Datalist ControlとDatagrid Controlは、スタイルや外観属性などのWebControl関数を継承します。
図8。リスト - クラスレベル構造のバインディング制御
オブジェクトモデルに関しては、リピーター制御が最も単純な制御です。また、最小のデータバインディング制御であり、基本的には異なります。つまり、特別なUIレイアウトを強制しません。最終的な適応法は、この方法を生成する方法に従います。このコントロールは、スタイルと外観の属性や行動をサポートするものではありません。これは、完全に制御する必要があるソリューションに最適です。
Datalist Controlは、列レイアウトまたはストリームレイアウトを使用することを余儀なくされたリピーターです。 WebControlに実装された外観属性を継承し、作成したアイテムに適した他のスタイル属性を追加します。 Datalist Controlには、プロジェクト標準操作(選択、編集、削除など)のサポートも含まれています。連続または行で配布されるレベルまたは垂直プロジェクトのシーケンスストリームに非常に適しています。
Datagridコントロールは、リストまたはラインのレイアウトを使用することを余儀なくされます。データリストと同様に、このコントロールはスタイルと外観の属性を提供します。 Datagridは、選択と編集に加えて、ページやソートなど、プロジェクト全体のコレクションに関する高度な操作もサポートしています。 DatagridとDatalistの主な違いの1つは、Datagridにはテンプレート属性、つまりDatagridコントロールのプロジェクトまたは非テンプレートが含まれていないことです。ただし、TemplateColumnをDatagridに追加して、特定の列でテンプレートを使用します。
次の表は、リストバインディングコントロールによって提供される関数の概要です。
関数リピーターDatalist Datagrid
テンプレートは(必須)または(必須)列(オプション)です
リストレイアウトですか?
ストリームレイアウトです
配布/新聞のコラムスタイルのレイアウトはありますか?
スタイルと外観の属性があるかどうか
はいかどうかを選択します
編集
削除されていますか?
ページネーションはありません
ソートされていますか?
関連リソース
Microsoft .NET Framework SDKによって公開されたQuickstartの例では、これらのコントロールのいくつかの例と、XMLおよびWebサービスでデータにアクセスするデータを説明する例がいくつかありました。 SDKに添付されたドキュメントには、ASP+ページフレームワークやサーバー制御など、関連するトピックの概念データ、およびこのフレームの制御の一部としてオブジェクトモデルの参照参照が含まれています。