Imports Infragistics.Web.UI.GridControls
WebDataGrid の ItemCommand サーバー サイド イベントでは、 TemplateField 列にあるコントロールから簡単にイベント (ボタン クリックなど) に応答できます。
このチュートリアルは、バインドした TemplatedField 列内に ASP.NET ボタンを追加し、ボタンがクリックされたときに情報を表示するために WebDataGrid の ItemCommand サーバー サイド イベントを処理する方法について説明します。
注: このチュートリアルは、WebDataGrid を DataSet オブジェクトにデザイン タイムでバインドしていることが前提になります。WebDataGrid コントロールを生成する方法については、このトピックの最後にある
クションをご覧ください。
コーディングを始める前にコード ビハインド内に using/Imports のディレクティブを配置することにより、メンバーの完全修飾名を常に入力する必要がなくなります。
Visual Basic の場合:
Imports Infragistics.Web.UI.GridControls
C# の場合:
using Infragistics.Web.UI.GridControls;
デザイン ビューで コントロール/コンポーネントを選択し、プロパティを選択します。
プロパティ ウィンドウで Columns コレクションの省略記号 (…) ボタンをクリックします。
コレクションに TemplateField を追加します。
利用可能なセクションから TemplateField を選択し、フィールド ボタンの追加をクリックします。
タイプ TemplateField の新しい列が列コレクションに追加されます。
TemplateField を追加する他の方法として、Grid フィールドを Template フィールドへ変換します。 グリッド フィールドを選択し、選択したグリッド フィールドをテンプレート フィールドへ押します。
[OK] ボタンをクリックして列コレクション エディターを閉じます。
ASP.NET Button コントロールをページに追加します。
ページのデザイン ビューから WebDataGrid のスマート タグを選択し、 [テンプレートの編集]をクリックします。
テンプレート編集モードを開いた後にテンプレート フィールド Freight を検索します。
ツールボックスから標準 ASP.NET ボタン コントロールを ItemTemplate へドラッグします。
編集を終了するために “テンプレート編集の終了” を選択します。
サーバー サイド イベント ハンドラーを ItemCommand イベント (コード ビハインド) に追加します。
Visual Basic の場合:
Protected Sub WebDataGrid1_ItemCommand(sender As Object, e As HandleCommandEventArgs)
End Sub
C# の場合:
protected void WebDataGrid1_ItemCommand(object sender, HandleCommandEventArgs e){ }
ItemCommand イベントにコードを追加し、行情報を取得します。コントロールがイベントを送り返す際に、サーバーはそのイベントに応答する必要があります。ItemCommand イベントは、コントロールによってスローされるイベントをキャプチャし、HandleCommandEventArgs オブジェクトを介してイベントを公開します。
ASPX の場合:
<ig:TemplateDataField Key="Freight"><ItemTemplate> <asp:Button ID="Button1" runat="server" Text="Button" CommandArgument='<%# Eval("Freight") %>' CommandName="Button1Click" /> </ItemTemplate> <Header Text="Freight"> </Header> </ig:TemplateDataField>
Visual Basic の場合:
Protected Sub WebDataGrid1_ItemCommand(sender As Object, e As HandleCommandEventArgs)
'e.CommandArgument は、対応するボタンの CommandArgument 属性から値を提供します。
Dim commandArgument As Object = e.CommandArgument
' Freight フィールド値で計算を実行し、それを Label へ渡します。
FreightValueLbl.Text = commandArgument.ToString()
End Sub
C# の場合:
protected void WebDataGrid1_ItemCommand(object sender, HandleCommandEventArgs e)
{
// e.CommandArgument は CommandArgument からの値を提供します。
attribute of the corresponding button
object commandArgument = e.CommandArgument;
// Freight フィールド値で計算を実行し、それを Label へ渡します。
FreightValueLbl.Text = commandArgument.ToString();
}
アプリケーションを実行します。 ボタンの 1 つをクリックし、以下のイメージのように Freight フィールド値が WebDataGrid の上に表示されます。
注: ボタン キャプションは、デザイン タイムでテンプレート列を開き、ボタンの Text プロパティで変更できます。更に列を選択し列コレクション エディターを使用することにより、その Header の Caption プロパティを選択して Template Field にヘッダー キャプションを追加できます。
関連トピック