日期:2014-05-19  浏览次数:20610 次

请问嵌套的在GridView里的radiobutton 怎么才能只选中一个啊
GridView1     中有一列从数据库加载数据     ,并且加一列

在编辑模板中     给该列加上radiobutton1      

但是运行起来后       那列所有radiobutton可被选中

请问怎样处理才能让只选中一个阿!!!

------解决方案--------------------
var v = document.getElementByID( " <%=GridView1.ClientID%> ");
v = v.all.tag( "input ");
for(i=0; i <v.length; i++)
{
if(v(i).type== "radio ")
{
检查是否选择;
}
}

大概是这样的,语法自己判断一下。
------解决方案--------------------
你在编辑模板里添加是的 runat=server 的 radiobutton 吧?

你换成不 runat=server 的 radio, <input type=radio name= "MyRadio ">
这样,肯定可以。

如果你非要用 runat=server 的 radiobutton 的话,你需要遍历 gridview ,修改 radiobutton 的 name 属性。
------解决方案--------------------
xrascal(横刀夺爱) 的方法 可行,但是我觉得还是 服务器端控件好用,我 想了想写了一个不用遍历GridView的!
服务器端代码,给GridView添加代码
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
RadioButton rb = (RadioButton)e.Row.FindControl( "RadioButton1 ");
rb.Attributes.Add( "onclick ", "judge(this) ");
}
}
客户端脚本如下
<script type= "text/javascript ">
var last = null;
function judge(obj)
{
if(last == null)
{
last = obj.id;
// alert(last);
}
else
{
var lo = document.getElementById(last);
lo.checked = " ";
// alert(last + " " + lo.checked);
last = obj.name;
}
obj.checked = "checked ";
}
</script>

------解决方案--------------------
1、模板列中加入客户端控件与事件: <input type= "radio " onclick= "setRadValue(this) " name= "xxx " value= ' <%#DataBinder.Eval(.....) '>
2、在页面上添加一个服务器端的Hidden id= "hidRadValue "
3、然后写个JS:
function setRadValue(obj)
{
document.getElementById( "hidRadValue ").value = obj.value;
}
4、在后台直接获取hidRadValue.value就可以了
5、如果想在加载页面时初始化radio的选中状态,可以写入下函数:
function InitRad(obj)
{
var rad = getElementsByName( "radio ");
for(var i=0;i <getElementsByName(xxx).length;i++)
{
if(rad[i].value = obj)
{
rad[i].checked = true;
}
}
}
遍历var rad = getElementsByName(xxx)
然后循环找到rad[i].value = 传递的value
rad[i].checked = true;