重载RadioButton加上一个Index的属性可以考虑在DataGrid ItemCreated事件中为绑定的RadioButton加入事件处理函数.并将每个Item的ItemIndex赋给RadioButton的Index属性在事件处理函数中,将sender造型为RadioButton,并获取当前点击的RadioButton的Index,也就是获得了DataGrid的点击的行号,遍历DataGrid的Items并将所有不在Index这一行的RadioButton的Checked设为fase.在页面上要将RadioButton的AutoPostBack设为true

解决方案 »

  1.   

    不刷新页面?可以考虑在DataGrid的ItemCreated事件中获取RadioButton的ClientID,并给RadioButton的Attributes["OnClick"]加上javascript的事件.
      

  2.   

    你应当使用htmlcontrols而不是webcontrols,因为htmlcontrols在生成客户端代码后不会被改名,这样就可以做到单选了。
      

  3.   

    有人说:插入一模板列,嵌入一只 RadioButton ,并绑定其 value
      

  4.   

    假定你有一个id=gridTest的控件,并绑定了一列RadioButton id=rbTest.则如果有三行数据产生三个RadioButton的ClientID为:gridTest__ctl2_rbTest,gridTest__ctl3_rbTest,gridTest__ctl4_rbTest你在gridTest控件的ItemCreated中如下写if (e.Item.FindControl("rbTest") != null) 
    {
      System.Text.StringBuilder sbJS = new System.Text.StringBuilder();  sbJS.Append("javascript:");
      for (int i = 0; i < 3; i++) 
      {
        if (i != e.Item.ItemIndex) 
        {
    sbJS.Append("document.all.gridTest__ctl" + (i+2) +"_rbTest.checked=false;");
         }
      }
    ((RadioButton)e.Item.FindControl("rbTest")).Attributes["OnClick"] = sbJS.ToString();
    }就可以做到了。可能在分页时还存在问题,你自已研究一下好了。