- PR -

GridViewのEditTemplateの中に入っているDropDownListのSelectValue取得方法

投稿者投稿内容
ムラ
ベテラン
会議室デビュー日: 2008/12/19
投稿数: 51
投稿日時: 2008-12-19 18:49
初めて投稿させていただきます。

知識が少ないのでよろしくお願いします。

GridViewのEditTemplateにDropDownListが配置されています。

GridViewにCommandFieldを追加して行編集を可能にしました。

行を編集モードにし、更新ボタンを押したときに

そのDropDownListの値を取得する方法をご教授頂きたいです。

言語はVBです。以下のコードを書きましたが取得できません(Updatingイベントのとき)↓

Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As

System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles

GridView1.RowUpdating

MsgBox(GridView1.Rows(e.RowIndex).__)

End Sub

とりあえずメッセージボックスにドロップダウンリストの値を表示したいです。

GridViewの編集行を選んで、__以降がわかりません。

他にもっと良い方法があればご教授願いたいです。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-12-19 22:06
GridView1.Rows(e.RowIndex).FindControl("DropDownListのID")を
DropDownListにキャストすればSelectValueが取れます。MsgBoxは本番環境では多分出力されません。
ムラ
ベテラン
会議室デビュー日: 2008/12/19
投稿数: 51
投稿日時: 2008-12-19 23:03
キャストとはDropDownListのイベント(コントロールをダブルクリック)に記述することですか? 知識不足ですみません。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-12-20 00:46
キャストは
DirectCast(GridView1.Rows(e.RowIndex).FindControl("DropDownListのID"),DropDownLost)
とか
CTpye(GridView1.Rows(e.RowIndex).FindControl("DropDownListのID"),DropDownLost)
のことです。

デザイナ上でDropDownListをダブルクリックすると確かSelectedIndexChangedイベントの
ハンドラができます。今回はRowUpdatingということなのでそれは不要ですよね。
ムラ
ベテラン
会議室デビュー日: 2008/12/19
投稿数: 51
投稿日時: 2008-12-22 08:32
知識不足なものでわかりませんでした。ありがとうございます。
ムラ
ベテラン
会議室デビュー日: 2008/12/19
投稿数: 51
投稿日時: 2008-12-24 15:12
返信が遅れて申し訳ないのですが

CType(GridView1.Rows(e.RowIndex).FindControl("DropDownListのID"),DropDownLost)の方法で試してみたのですがやはり、DropDownListの値は取れません。

"Prompt"は"String"に変換できないとエラーが出ます。

変数に入れてデバックしてもみたのですがどうやらObject自体の値が取れているようです。

他に方法があれば御教授願いたいです。

よろしくお願いします。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-12-24 17:55
引用:
変数に入れてデバックしてもみたのですがどうやらObject自体の値が取れているようです。

CType(GridView1.Rows(e.RowIndex).FindControl("DropDownListのID"),DropDownList)
でとれるのはあくまでもDropDownListのインスタンスですよ。
それのSelectedValueをとればいいはずです。

#先の投稿スペルミス多すぎ私・・
ムラ
ベテラン
会議室デビュー日: 2008/12/19
投稿数: 51
投稿日時: 2008-12-24 18:00
大事なことを忘れてました…

御指摘ありがとうございます!

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