- PR -

DataGrid内のCheckBoxListの値を取得したい

1
投稿者投稿内容
黒コアラ
常連さん
会議室デビュー日: 2004/07/03
投稿数: 23
投稿日時: 2005-02-16 18:04
タイトルと同様の内容でCheckBoxの値は取得できたのですが、今回はCheckBoxListについてです。
DataGrid内に設置したCheckBoxListのそれぞれの値を取得したいのですが、方法がわかりません。

Dim cbData As CheckBoxList
Dim cbName As String
Dim i as Integer
cbData = CType(DataGrid.Items(i).FindControl("CheckBoxList"), CheckBoxList)
cbName = cbData.UniqueID

という具合にDataGridのi行目にあるCheckBoxListのIDを取得した後、はてどうすればよいのかと考えている次第です。
こちらのログを読み、フォーム内のデータはRequest.formを介するようにとあったのですが、

Request.Form(cbName)

には何も入らないのです。
解決法をご存じの方、ご教授をお願いいたします。
Lin
ベテラン
会議室デビュー日: 2004/11/08
投稿数: 50
投稿日時: 2005-02-16 23:15
引用:

黒コアラさんの書き込み (2005-02-16 18:04) より:
タイトルと同様の内容でCheckBoxの値は取得できたのですが、今回はCheckBoxListについてです。
DataGrid内に設置したCheckBoxListのそれぞれの値を取得したいのですが、方法がわかりません。

Dim cbData As CheckBoxList
Dim cbName As String
Dim i as Integer
cbData = CType(DataGrid.Items(i).FindControl("CheckBoxList"), CheckBoxList)
cbName = cbData.UniqueID




???
cbDataでCheckBoxListが取得できているのだから
それを使えばいいのでは…。
黒コアラ
常連さん
会議室デビュー日: 2004/07/03
投稿数: 23
投稿日時: 2005-02-17 08:27
>cbDataでCheckBoxListが取得できているのだから
>それを使えばいいのでは…。

最初はそのcbDataから直接に値を取り出せるのかなと思っていたのですが、
例えば、チェックボックスリストのj番目の要素について
cbData.Items(j).Selected
としても、フォーム上でチェック/解除した値が返ってきません。

予めデータをcbData.Items(j).Selected=Trueとしてチェックしておき、それを解除してもTrueの値が返ってきます。つまり反映されていないのかなと思った次第でして。
SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2005-02-17 09:11
こんにちは。

>予めデータをcbData.Items(j).Selected=Trueとしてチェックしておき、それを解除しても>Trueの値が返ってきます。つまり反映されていないのかなと思った次第でして。

簡単なサンプルで確認してみたのですが、どうやらPostBackが起きると以前のチェックした
データは消えて初期状態に戻っていますね。EnableViewState = Trueでも駄目みたいですね。

その前に黒コアラさんはどのイベントでCheckBoxListの値を取得していますか?

黒コアラ
常連さん
会議室デビュー日: 2004/07/03
投稿数: 23
投稿日時: 2005-02-17 09:41
お世話になります。
すいません、参考書とかhttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=12272&forum=7
こちらを読んでよくよく考えてみたところ、page_load→サーバコントロールの発生時ということをすっかり忘却しておりました。
DataGridへのDataBindをpage_load中でpostbackの度に行っていたのが原因でした。

どうもありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)