哥们今天郁闷死了
在DATAGRID的摸板列里面加了个RADIOBUTTON,GROUPNAME也设置的叫一样的名字。
那知道生成以后居然不是单选,可以选择生成以后所有的RADIOBUTTON,不知道这个问题怎么解决,希望高人指点。

解决方案 »

  1.   

    需要手工判断了吧,当选中一个的时候要把其他的都清空,遍历datagrid.items中的每个RADIOBUTTON设置
      

  2.   

    他们的groupname在客户端生成时是不一样的,自然就不是单选了,.......
      

  3.   

    RADIOBUTTON.item.add((ListItem) li)
      

  4.   

    客户端自动生成的radiobutton的id是有规律的,而且不会改变的。如果搂主不想老是提交页面的话,就在前台页面嵌入javascript,控制她门的选中与否。
      

  5.   

    我用 TemplateColumn 可以实现,也许还有更好的方法:Private Sub Page_Load(......) Handles MyBase.Load
        ' DataGrid 添加动态模板列
        Dim _Col As New TemplateColumn()
        _Col.ItemTemplate = New RBItemTemplate()
        _Col.HeaderText = "Header"
        _Col.FooterText = "Footer"
        _Col.ItemStyle.Width = New Unit(120)
        _Col.ItemStyle.HorizontalAlign = HorizontalAlign.Center
        _Col.ItemStyle.Wrap = False
        grdRB.Columns.Add(_Col)    ' 数据绑定
        grdRB.DataSource = ......
        grdRB.DataBind()
    End Sub
    Private Sub btnSubmit_Click(......) Handles btnSubmit.Click
        Dim iRow As Integer
        For iRow = 0 To grdRB.Items.Count - 1
            Dim _RdoBtnList As RadioButtonList = grdRB.Items(iRow).Cells(COL_NUM).Controls(0)
            If Not _RdoBtnList.SelectedItem Is Nothing Then
                ......
            End If
        Next iRow
    End SubClass RBItemTemplate    Implements ITemplate    Dim WithEvents pan As RadioButtonList    Public Sub Instantiatein(ByVal container As Control) Implements ITemplate.InstantiateIn
            pan = New RadioButtonList()
            pan.Items.Add(1)
            pan.Items.Add(2)
            pan.Items.Add(3)
            pan.Items.Add(4)
            pan.Items.Add(5)
            pan.RepeatColumns = 5
            container.Controls.Add(pan)
        End SubEnd Class
      

  6.   

    jadeface(颜如玉) 
    你这要用到按钮啊,如何在选的时候判断
      

  7.   

    如果你能把它们放在同一个panel里的话,那就是单选了。
      

  8.   

    试试把datagrid放在一个panel里面。
      

  9.   

    for(var n=0;n<oForm[i].elements.length;n++)

    oEle=oForm[i].elements[n]; 
    if(oEle.type=='radio')
             {
                oEle.name = "GroupName";
    }
    }
    在前台嵌一段这样的javascript统一一下他们的GroupName,试试看吧。
      

  10.   

    很郁闷的是页面除了DATAGRID以外还有其他的RADIOBUTTON
      

  11.   

    这样吧:.aspx
    ------------------------------------
    <asp:DataGrid id="dgOrnek" runat="server" 
     AutoGenerateColumns="False">
       <Columns>
         <asp:TemplateColumn>
           <ItemTemplate>
             <asp:RadioButton AutoPostBack=True 
                 OnCheckedChanged="DetayGoster" 
                 id="rbsira" Text='deneme' runat="server"/>
           <ItemTemplate>
         <TemplateColumn>
       <Columns>
    ----------------------------
    .aspx.cs
    ---------------------------
    string sRbText="";
     public void DetayGoster(object sender,EventArgs e) {
         RadioButton rb = new RadioButton();
         rb = (RadioButton) sender;
         sRbText = rb.ClientID;
     
         foreach (DataGridItem i in dgOrnek.Items) 
         {
             rb    = (RadioButton) i.FindControl ("rbsira");
             rb.Checked = false;
             if (sRbText==rb.ClientID)
             {
                 rb.Checked = true;
                 txtSiraNo.Text = rb.Text.Trim(); 
      // if you want to get a property of the selected id
             }
         }
      }
      

  12.   

    <asp:TemplateColumn>
    <ItemTemplate>
        <INPUT type="radio" name="hello">
    </ItemTemplate>
    </asp:TemplateColumn>这个已经测试过可以达到单选的目的,但是如何拿到值,你要研究一下了。我下班了。哈哈哈。努力。
      

  13.   

    datagrid外的rb跟datagrid里面的rb是同一组名????
    你试了把datagrid放在panel了吗?里面的rb是否只能单选,我很想知道结果!
      

  14.   

    <asp:TemplateColumn>
    <ItemTemplate>
        <INPUT type="radio" name="hello">
    </ItemTemplate>
    </asp:TemplateColumn>页面上加上这段js就可以知道是那一行了。但是生成的页面source的value可能没有,但是在radiobutton上面添加onclick="alert(this.value)"你就可以看到value值已经被加上了。
    <script language=javascript>
    <!--
    var j = 0;
    var oForm=document.forms; 
    for(var i=0;i<oForm.length;i++)

    var oEle;
    for(var n=0;n<oForm[i].elements.length;n++)

    oEle=oForm[i].elements[n]; 
    if(oEle.type=='radio' && oEle.name == "helloworld")

    oEle.value=++j;
    }
    }
    }
    //-->下班咯,回家咯。
      

  15.   

    多谢cancersyf(fengzhimei) ,也让我学到了一种新的调用方法,谢谢。同时也感谢其他热心的朋友