- PR -

DataGrid内のRadiobuttonの値の再Checked

投稿者投稿内容
ぷにぷに
常連さん
会議室デビュー日: 2003/07/14
投稿数: 24
投稿日時: 2004-02-27 14:26
お世話になっております。
ぷにぷにです。

.ASP(VB)で行っております。

◎やりたいこと
  @DataGrid内にRadioButtonを設置し、
  Aクリック時にAutoPostBackで何番目のRadioなのかを取得
  Bその後、取得した値からDataGrid内の取得した値を基に
   n番目のRadiobuttonにCheckedをつける
◎現在の状況
  @は作成しました。
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:RadioButton id="RadioButton1" AutoPostBack="True"
runat="server">
</asp:RadioButton>
</ItemTemplate>
</asp:TemplateColumn>


</Columns>

  Aは値を受け取れました。
for i = 0 to 3
If CType(answertbl.Items(i).FindControl("RadioButton1"),
RadioButton).Checked = True then
response.write (i)
end if
next

Bなのですが、n番目のRadioButtonに「Checked」をどういう方法で入れれば、
    良いのでしょうか?
  よろしくお願い致します。

##変な日本語でしたので、修正させて頂きました。
  

[ メッセージ編集済み 編集者: ぷにぷに 編集日時 2004-02-27 14:36 ]
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2004-02-27 14:44
引用:

ぷにぷにさんの書き込み (2004-02-27 14:26) より:

  Aは値を受け取れました。
for i = 0 to 3
If CType(answertbl.Items(i).FindControl("RadioButton1"),
RadioButton).Checked = True then
response.write (i)
end if
next

Bなのですが、n番目のRadioButtonに「Checked」をどういう方法で入れれば、
    良いのでしょうか?
  よろしくお願い致します。




惜しい、2番目の処理に答えが・・・。

#参考までに自分が回答したスレッドを
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=7958&forum=7

-------------
#ちょっと修正
_________________

まゆりん@人生Try and Error!(笑)

[ メッセージ編集済み 編集者: まゆりん 編集日時 2004-02-27 14:53 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-02-27 14:54
直接関係ありません:

 Response.writeですが、リリース前に削除しましょう(デバッグようなので削除するとは思いますが)。これをRenderイベント以外で使うと、HTML要素の外に出力されます(もっとも、ヘッダーなどを自前でプッシュしている場合は除きます)。つまり、クライアントに返しているのは「HTMLファイル」ではなくなります。


 もっとも、多くのエージェントはHTML要素の外をそのまま表示し、HTML要素から解釈を始めてくれますが、XHTMLになると。。。
ぷにぷに
常連さん
会議室デビュー日: 2003/07/14
投稿数: 24
投稿日時: 2004-02-27 15:08
まゆりん様、Jitta様ありがとうござます。
引用:

まゆりんさんの書き込み (2004-02-27 14:44) より:

惜しい、2番目の処理に答えが・・・。




・・・・・・。
答えがあるんですか?

まゆりん様にのっけていただいたURLを参照しました。
Style.addでRadioButtonのCheckをTrueにするのかなと思ったのですが・・・
違うみたいですね・・・

引用:

Jittaさんの書き込み (2004-02-27 14:54) より:
Response.writeですが、リリース前に削除しましょう(デバッグようなので削除するとは思いますが)。これをRenderイベント以外で使うと、HTML要素の外に出力されます(もっとも、ヘッダーなどを自前でプッシュしている場合は除きます)。つまり、クライアントに返しているのは「HTMLファイル」ではなくなります。


 もっとも、多くのエージェントはHTML要素の外をそのまま表示し、HTML要素から解釈を始めてくれますが、XHTMLになると。。。


Response.Writeに関してはもちろん削除いたします。
なんとなくは解っていたのですが、そのあたりを意識して開発を行っているか?
となるとさっぱりやっておりません。駄目ですね・・・>「HTMLファイル」ではなくなる
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2004-02-27 15:20
ここ↓
>If CType(answertbl.Items(i).FindControl("RadioButton1"),
>RadioButton).Checked = True then

Checkedはチェック状態を取得するだけではなく、設定することも可能なんです。
#MSDNで「CheckBox.Checked プロパティ 」を調べてみてください。

-----------------
追加:
ちなみに参考にして欲しかった部分はここだけです。
>Dim ctlText As TextBox
>ctlText = CType(e.Item.FindControl("Text_Box1"), TextBox)

_________________

まゆりん@人生Try and Error!(笑)

[ メッセージ編集済み 編集者: まゆりん 編集日時 2004-02-27 15:25 ]
ぷにぷに
常連さん
会議室デビュー日: 2003/07/14
投稿数: 24
投稿日時: 2004-02-27 16:25
まゆりん様ありがとうございます。

引用:

まゆりんさんの書き込み (2004-02-27 15:20) より:
ここ↓
>If CType(answertbl.Items(i).FindControl("RadioButton1"),
>RadioButton).Checked = True then

Checkedはチェック状態を取得するだけではなく、設定することも可能なんです。
#MSDNで「CheckBox.Checked プロパティ 」を調べてみてください。




MSDNを検索かけて調べました。>CheckBox/RadioButton
「取得」メインで「設定」についてはあまり書かれていないと思いました。
(間違ってますでしょうか?)

自分で考えた答えが
Dim ctlRadio As RadioButton
for i = 0 to 3
If CType(answertbl.Items(i).FindControl("RadioButton1"),
RadioButton).Checked = True then
ctlRadio = CType(answertbl.Items(i).FindControl("RadioButton1"),
RadioButton)
CType(ctlRadio, RadioButton).Checked = True
end if
next

(ctlRadioというものに対してCheckをTrueにしてあげるという考えをしてます。)
ところがエラーにはならないのですが、
リロード後にCheckがつきません。

全く私のやっている事は見当違いなのでしょうか?
よろしくお願い致します。
無月 重造
ベテラン
会議室デビュー日: 2003/12/18
投稿数: 67
投稿日時: 2004-02-27 16:56
ラジオボタンにチェックするタイミングは何時になっていますか?
データグリッドのPreRendarメソッドあたりでチェックしてやるといいかと思います。

#まぁ、それでもチェックがつかないというなら
#デバッグでそのコードにブレイクを設定して
#ちゃんと通過しているかどうか確かめてみる事をお勧めします
ぷにぷに
常連さん
会議室デビュー日: 2003/07/14
投稿数: 24
投稿日時: 2004-02-27 17:15
無月 重造様、ありがとうございます。

引用:

無月 重造さんの書き込み (2004-02-27 16:56) より:
ラジオボタンにチェックするタイミングは何時になっていますか?
データグリッドのPreRendarメソッドあたりでチェックしてやるといいかと思います。

#まぁ、それでもチェックがつかないというなら
#デバッグでそのコードにブレイクを設定して
#ちゃんと通過しているかどうか確かめてみる事をお勧めします



現在、Page_Load時にやっておりましたので、
DataGridへBindする前でした。
意味ないですね・・・

OnPreRenderはオーバーライドさせるものみたいですので調べてやってみます。
ありがとうございます。

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