- PR -

GridView内に配置したRadioButtonのTextプロパティを取得

1
投稿者投稿内容
32WH
会議室デビュー日: 2006/08/03
投稿数: 15
投稿日時: 2006-08-09 10:35
毎度お世話になります。

ASP.net(VB2005)
DB:SQLServer2005
で開発を行っております、

GridView内にテンプレートとして配置した
RadioButtonをクリックしたタイミングで
クリックされたRadioButtonのTextプロパティをJavaScriptで
取得したいと思っております。

以下の様なスクリプトボタン押下時を埋め込み実行したのですが、
ダイアログには空白が表示されてしまいます。
----------------------------------------------------
alert(document.formname.ctl00$contents$gridview1$ctl01$radiobutton.innerText)
----------------------------------------------------

RadioButtonでAutoPostBackを使用し、
クリックのタイミングでTextプロパティを
取得することは可能なのですが、毎回PostBackを発生させたくないので、
JavaScriptで出来ればと思い、投稿した次第です。

どなたか解決方法をご存知の方、
ご教授いただけますでしょうか?
よろしくお願いいたします。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-08-09 11:36
引用:
----------------------------------------------------
alert(document.formname.ctl00$contents$gridview1$ctl01$radiobutton.innerText)
----------------------------------------------------

HTML出力を見てみてください。上記のタグ(INPUTタグですよね)の中に文字列はないですよね。
文字列があるのはlabelタグの方ですよね。
32WH
会議室デビュー日: 2006/08/03
投稿数: 15
投稿日時: 2006-08-09 13:07
べる様
今回もご回答ありがとうございます。

引用:

HTML出力を見てみてください。上記のタグ(INPUTタグですよね)の中に文字列はないですよね。
文字列があるのはlabelタグの方ですよね。



はい、文字列があるのはlabelタグの中なのですが、
RadioButtonのIdとforで関連付けられていたので、
取得できるのではないかと思い、このような記述にいたしました。
このようにRadioButtonとLabelで関連付けられている場合には
どのように取得すればよいのかがわからないのです、
labelには一意に識別する為のIdが無いので…

よろしくお願いいたします。

べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-08-09 14:12
引用:
はい、文字列があるのはlabelタグの中なのですが、
RadioButtonのIdとforで関連付けられていたので、
取得できるのではないかと思い、このような記述にいたしました。

innerTextは文字通り、その要素の内部にあるtextを取得します。

解決策としては大きく分けて二つ考え付きますね。

一つ目は、javascriptでfor属性をみてそのlabel要素を探す。
forはinput(radio)のIDを指しているわけで、一意なのだから。

二つ目は、
.NETの2.0のRadioButtonには幸い LabelAttributes なんていうプロパティがあって
Label部分に属性を追加することができます。これで一意なidなりnameなりを足してあげれば。
問題はどのタイミングでやるかですが、GridViewのRowDataBoundあたりでしょうかね。
32WH
会議室デビュー日: 2006/08/03
投稿数: 15
投稿日時: 2006-08-09 20:29
お世話になります。

引用:

べるさんの書き込み (2006-08-09 14:12) より:
innerTextは文字通り、その要素の内部にあるtextを取得します。

解決策としては大きく分けて二つ考え付きますね。

一つ目は、javascriptでfor属性をみてそのlabel要素を探す。
forはinput(radio)のIDを指しているわけで、一意なのだから。

二つ目は、
.NETの2.0のRadioButtonには幸い LabelAttributes なんていうプロパティがあって
Label部分に属性を追加することができます。これで一意なidなりnameなりを足してあげれば。
問題はどのタイミングでやるかですが、GridViewのRowDataBoundあたりでしょうかね。



べる様、度々のご回答ありがとうございます。
上記二つ目の方法で実装することが出来ました!

RowDataBoundですと、PostBack時に消えてしまうので、
RowCreatedイベントに実装することにしました。
以下実装部です。
----------------------実装-----------------------
Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated
Dim Temp As RadioButton
If (e.Row.RowType = DataControlRowType.DataRow) Then
Temp = CType(e.Row.FindControl("RadioButton"), RadioButton)
Temp.Attributes("onClick") = "document.getElementById('ctl00_lbl_test').innerHTML = document.getElementById('radio$" & e.Row.DataItemIndex & "').innerHTML"
Temp.LabelAttributes.Item("id") = "rdi$" & e.Row.DataItemIndex
End If
End Sub
--------------------------------実装------------------------------
この形で画面上のラベルにラジオボタン内のラベルを無事表示できました!

このような初心者質問にご回答頂き、
ありがとうございました!!

これで解決とさせていただきます。
1

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