2009-05-18 22 views
2

GridViewコントロールにDropDownListsのフッター行を追加しようとしています。問題は、設計時にDataSourceに列がいくつあるのかわからないため、AutoGenerateColumns = trueを使用して列テンプレートを指定しようとしていません。したがって、DropDownListコントロールをフッターに追加する方法は、GridViewのDataBoundイベントで動的にコードに記述されます。ASP.NET GridViewにフッターを動的に追加

これは、ユーザーがボタンをクリックしたときに各DropDownListsのSelectedItemで何かしたいという点を除いて、問題なく機能します。これらの動的に追加されたコントロールは、もはやボタンをクリックしたユーザーのポストバックには存在しないようです。DropDownListコントロールでrunat = "server"タグを指定していないためです。

ユーザーがページのボタンをクリックしたときにSelectedItemsにアクセスできるように、すべての列を指定せずにこれらのドロップダウンをFooterTemplateに追加する方法がありますか?

+0

コントロールをインスタンス化するために使用しているコードを投稿できますか? – Lazarus

答えて

2

あなたは部分的に正しいです - 動的に追加されたコントロールは、ポストバック後ももう存在しません。それらはDataBoundイベントが実行されるまで再追加されません。問題は、データバインドイベントがコントロールイベントの後にとなることです。つまり、ボタンのClickイベントの後にの後にとなります。したがって、クリックイベントが処理されるページライフサイクルの時点で、それらのコントロールはまだ再作成されていません。

Here's a related question which might have some useful information

0

あなたはAddHandler命令を作成する必要があります。

dim dropdownlistname as new Dropdownlist 
Addhandler dropdownlistname.selected_indexchanged,AddressOf dropdownlistname_SelectedIndexChanged 

その後、あなたは次のようにサブを作成する必要があります。

Protected Sub dropdownlistname_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddldept.SelectedIndexChanged 

'Insert Code here 

End sub 

だから何これが行うことは、それがイベントを作成して行くためのアドレスを宣言されていますそのイベントのために。このイベントでは、どんなコードでも書くことができます。

関連する問題