- PR -

DataGrid貼り付けたRadioボタンのグループ化

1
投稿者投稿内容
GUNNM
常連さん
会議室デビュー日: 2002/01/23
投稿数: 30
お住まい・勤務地: 横浜
投稿日時: 2002-10-04 02:14
お世話になります。
DataGridにテンプレート列を追加して、その列にRadioボタンを追加します。
そして、列に追加したRadioボタンをグループ化しようとして、GroupNameプロパティを変更しても、うまくグループ化されません。

生成されるHTMLを見てみると、RadioボタンのName属性にセルの番号(?)が吹かされてしまうことが原因だとわかりました。

DataGridにRadioボタン列を追加し、それらをグループ化する方法をお知らせください。

以上、よろしくお願いいたします。
_________________
GUNNM でした。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2002-10-04 10:10
過去に同様の質問があったような気がしますが
本来このような使い方は、RadioButtonListを使用すべきなのでは
ないでしょうか。

どうしても、DataGridにRadioButtonを表示させてグループ化したい
ときは、RadioButtonのOnCheckedChangedイベントですべてのRadioButton
をリセットしてからカレントのRadioButtonをチェックします。
コード:
Sub RadioButton_CheckedChanged(s As Object, e As EventArgs)
  Dim dgi As DataGridItem
  For Each dgi In dgrdFields.Items
    CType(dgi.Cells(0).Controls(1), RadioButton).Checked = False
  Next
  CType(s, RadioButton).Checked = True
End Sub

<Columns>
  <asp:TemplateColumn>
    <ItemTemplate>
      <asp:RadioButton runat="server"
        AutoPostBack="True"	
        OnCheckedChanged="RadioButton_CheckedChanged" />
    </ItemTemplate>
   </asp:TemplateColumn>
   ....
</Columns>



RadioButtonにAutoPostBack="True"を追加する必要があるため、チェックする度に
PostBackされます。

P.S.
よろしければ、RadioButtonListを使用できない理由をお聞かせください。

Happy Programming!
Akio Kasai
GUNNM
常連さん
会議室デビュー日: 2002/01/23
投稿数: 30
お住まい・勤務地: 横浜
投稿日時: 2002-10-09 08:44
レスポンスを入れていただきありがとうございます。

>よろしければ、RadioButtonListを使用できない理由をお聞かせください。

DataGridの各行にRadioButtonを出したいのですが、RadioButtonListを使うと、1つのセルにいくつものRadioButtonが入ってしまったため、普通のRadioButtonを使うことにしました。

また、選択ボタン列を用いないで、RadioButtonにしたのは、できるだけPostBackの回数を減らしたいと考えているからです。

選択問題だけの試験用紙のようなWebページを作っています。問題の数も結構あるので、回答を選択肢から選ぶたびにPostBackがかかるのはつらいと考えています。

ご教授のほどよろしくお願いいたします。
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2002-10-10 10:49
http://support.microsoft.com/default.aspx?scid=kb;ja;JP316495
本来はGroupName属性によって解決されるべきだがバグってる、というマイクロソフトの見解のようですね。

さすがに毎回PostBackするのが嫌だったので、サーバコントロールでなく、直接ラジオボタンのHTMLを埋め込んでいます。

<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<input name="ShainCD" type="radio" value="<%# DataBinder.Eval(Container.DataItem, "SHAIN_CD") %>" />
</ItemTemplate>
</asp:TemplateColumn>
....
</Columns>


サーバ側では
string strShainCd = Request.Form["ShainCD"];
のようにしてポストデータを読んでいます。

あまり.Net的ではないですが、パフォーマンス、操作感を優先させることにしました。

ご参考になれば幸いです。
GUNNM
常連さん
会議室デビュー日: 2002/01/23
投稿数: 30
お住まい・勤務地: 横浜
投稿日時: 2002-10-10 13:21
ありがとうございます!!

>さすがに毎回PostBackするのが嫌だったので、サーバコントロールでなく、直接ラジオボタンのHTMLを埋め込んでいます。

ご教授いただいた方法にて何とかできそうです。
今後とも、何かありましたら、お願いいたします。
ラジオ
会議室デビュー日: 2004/10/20
投稿数: 19
投稿日時: 2004-12-01 23:05
asp.net(c#)でWeb開発を行っております。

DataGridでラジオボタンを作成し、グループ化を行いたいのですが、
過去ログにあった、下記のHTMLを埋め込んだのですが、
「value="<%# DataBinder.Eval(Container.DataItem, "SHAIN_CD") %>" />」
の"SHAIN_CD"で属性'SHAIN_CD'が見つかりませんとなります。

HTMLについて調べてみたのですが理解することができませんでした。
何か足りないと思うのですが、どなたかご指導お願いします


<><><><><>過去ログ引用文<><><><><>
さすがに毎回PostBackするのが嫌だったので、サーバコントロールでなく、直接ラジオボタンのHTMLを埋め込んでいます。

<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<input name="ShainCD" type="radio" value="<%# DataBinder.Eval(Container.DataItem, "SHAIN_CD") %>" />
</ItemTemplate>
</asp:TemplateColumn>
....
</Columns>


サーバ側では
string strShainCd = Request.Form["ShainCD"];
のようにしてポストデータを読んでいます。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-12-01 23:23
NAL-6295です。

過去ログに、GroupNameにおける不具合を回避するためのカスタムコントロールの作り方を記述してあります。
過去ログを漁るのが面倒な場合は、僕のblog(下のホームページアイコンで行ける)の.NET Tipsカテゴリで言及しています。
もし良かったら参考にされてください。

*編集
カテゴリが変更された。
元々のURLのサンプルにはデザイン時にエラーが発生するという制限があったため、
下記URLで、その制限を回避。(2005/10/23)
http://d.hatena.ne.jp/NAL-6295/20051023/p2


[ メッセージ編集済み 編集者: NAL-6295 編集日時 2005-10-20 00:03 ]

[ メッセージ編集済み 編集者: NAL-6295 編集日時 2005-10-23 16:40 ]
1

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