- PR -

DataGridのテンプレート列にラジオボタンを配置

1
投稿者投稿内容
ASP.NET初心者
常連さん
会議室デビュー日: 2005/01/07
投稿数: 30
投稿日時: 2008-03-17 13:26
お世話になります。

ASP.NETにて開発しております。
DataGridのテンプレート列にラジオボタンを配置しています。
複数行ある場合に、1行のみラジオボタンが選択されている状態にしたいと考えています。
(ラジオボタンリストと同じ動作にしたい)
どのようにしたらよいかご教授願います。

宜しくお願い致します。
Toshi
ベテラン
会議室デビュー日: 2007/09/18
投稿数: 68
お住まい・勤務地: 関東のどっか
投稿日時: 2008-03-17 15:58
RadioButton の GroupNameプロパティとか使えませんかね?
(確認等一切してないので、ご確認のうえご使用を・・)

RadioButton.GroupNameプロパティ
http://msdn2.microsoft.com/ja-jp/library/system.web.ui.webcontrols.radiobutton.groupname(VS.80).aspx
ASP.NET初心者
常連さん
会議室デビュー日: 2005/01/07
投稿数: 30
投稿日時: 2008-03-18 13:34
Toshi様 返信有難う御座います。

>RadioButton の GroupNameプロパティとか使えませんかね?
1行に複数のラジオボタンを配置する場合は可能ですが、
別の行にある場合はできないようです。

自分でも試しているんですが、よい方法が見つかりません。
引き続き皆様のご協力をお願いします。
Toshi
ベテラン
会議室デビュー日: 2007/09/18
投稿数: 68
お住まい・勤務地: 関東のどっか
投稿日時: 2008-03-18 14:24
以前一度実装をしたことがあります。
そのときは、JavaScriptで制御して実現しました。
(onClickのタイミングとかで、他のRadioButtonの
選択状態を無効にするようなことをしていたと思います。)

ちょっと記憶があいまいで・・・すいません。
参考になれば幸いです。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-03-18 14:29
「DataGrid ラジオボタン」でググったらヒットしたので貼っておきます。

[ASP.NET]DataGrid内のラジオボタンでグループに出来ない問題の回避方法
ASP.NET初心者
常連さん
会議室デビュー日: 2005/01/07
投稿数: 30
投稿日時: 2008-03-19 18:19
Toshi様、rain様 返信有難う御座います。

>そのときは、JavaScriptで制御して実現しました。
>(onClickのタイミングとかで、他のRadioButtonの
>選択状態を無効にするようなことをしていたと思います。)
私もクリックのイベントで他のラジオボタンの選択を切替ようかと考えておりました。
他に何か簡単な方法はないかと模索していました。

rain様に貼っていただいたリンクを参照しましたが、理解できませんでした。
Webカスタムコントロールを追加してコードをそのまま貼り付けてみましたが、
どのように使えばいいのかわかりませんでした。
もう少し勉強してみます。
もし、わかりやすいサイト等がありましたら、教えていただけたらと思います。
よろしくお願い致します。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2008-03-20 07:54
JavaScriptでRadioButtonのName属性を書き換えるよりも、
RadioButtonのName属性が書き換えられないようにランタイム時に追加するのが簡単なような気がします。

この例では、GridViewのRowCreatedイベントでRadioButtonを追加しています。

コード:
  Protected Sub btnGetCategoryiD_Click( _
    ByVal sender As Object, ByVal e As System.EventArgs)
    If Me.GridViewSelectedIndex > 0 Then
      Dim strCategoryID As String = GridView1.DataKeys(Me.GridViewSelectedIndex).Value.ToString
      lblMessage.Text = String.Format("Selected ID: {0}", strCategoryID)
    End If
  End Sub
  
  Protected Sub GridView1_RowCreated( _
     ByVal sender As Object, _
     ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
    If e.Row.RowType = DataControlRowType.DataRow Then
      Dim output As Literal = CType(e.Row.FindControl("RadioButtonMarkup"), Literal)
      output.Text = String.Format("<input type=""radio""
                     name=""RadioButtonGroup""
                     id=""RowSelector{0}"" value=""{0}""", e.Row.RowIndex)

      If Me.GridViewSelectedIndex = e.Row.RowIndex Then
        output.Text &= " checked=""checked"""
      End If
      output.Text &= " />"
    End If
  End Sub
  
  Private ReadOnly Property GridViewSelectedIndex() As Integer
    Get
      If String.IsNullOrEmpty(Request.Form("RadioButtonGroup")) Then
        Return -1
      Else
        Return Convert.ToInt32(Request.Form("RadioButtonGroup"))
      End If
    End Get
  End Property



_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
1

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