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