WebDataGrid では TemplateDataField に配置されたコントロールの Click 等のサーバーサイドイベントはItemCommand にて捕捉することができます。

<ig:WebDataGrid ..... OnItemCommand="WebDataGrid1_ItemCommand" >
	<Columns>
.....
		<ig:TemplateDataField Key="TemplateField_0">
			<Header Text="TemplateField_0">
			</Header>
			<ItemTemplate>
				<asp:Button ID="myButton" runat="server" Text="ボタン" />
			</ItemTemplate>
		</ig:TemplateDataField>
	</Columns>
</ig:WebDataGrid>
protected void WebDataGrid1_ItemCommand(object sender, Infragistics.Web.UI.GridControls.HandleCommandEventArgs e)
{
   //クリック時の処理
}

しかし、WebDataGrid を EnableDataViewState = true 設定で利用する場合はテンプレートをインスタンス化する DataBind() メソッドの実行が ItemCommand イベントの発生に間に合いません。

<ig:WebDataGrid .....
	OnItemCommand="WebDataGrid1_ItemCommand" EnableDataViewState="True">
.....
</ig:WebDataGrid>


この場合は、Page_Load() で以下のように WebDataGrid の EnsureTemplates() メソッドを実行します。

protected void Page_Load(object sender, EventArgs e)
{
	if (IsPostBack)
	{
		WebDataGrid1.EnsureTemplates();
	}
}
Tagged:

製品について

Ultimate UI for ASP.NET