问题描述
下面的代码可以实现我要的功能.name相同的checkbox只可以单选<scriptlanguage="javascript">functionChangeSelect(obj){theForm=document.forms[0];varoldStatus;oldStatus=obj.checked;for(i=0;i<theForm.elements.length;i++){if(theForm.elements[i].name==obj.name){theForm.elements[i].checked=false;}}if(oldStatus)obj.checked=true;elseobj.checked=false;returntrue;}</script><formid="form1"runat="server"><inputtype="checkbox"id="xx"runat="server"name="111"onClick="ChangeSelect(this);"><inputtype="checkbox"id="xxxx"runat="server"name="111"onClick="ChangeSelect(this);"><inputtype="checkbox"id="ch_zhu"runat="server"name="222"onClick="ChangeSelect(this);"><inputtype="checkbox"id="ch_ke"runat="server"name="222"onClick="ChangeSelect(this);"></form>
但是当把checkbox放到GridView后,GridView解析出来的HTML像下面这样了-------------->服务端<inputtype="checkbox"id="ch_zhu"runat="server"name='<%#DataBinder.Eval(Container,"DataItem.bq_id")%>'onClick="ChangeSelect(this);"><inputtype="checkbox"id="ch_ke"runat="server"name='<%#DataBinder.Eval(Container,"DataItem.bq_id")%>'onClick="ChangeSelect(this);">------------>HTML解析出来的东东<inputname="GridView1$ctl02$ch_zhu"type="checkbox"id="GridView1_ctl02_ch_zhu"onClick="ChangeSelect(this);"/><inputname="GridView1$ctl03$ch_zhu"type="checkbox"id="GridView1_ctl03_ch_zhu"onClick="ChangeSelect(this);"/>------------>name变了,所以单选功能也就失效了,请教解决代码------------>当然,去掉checkbox的runat="server"是可以的,但是这样在后面取checkbox的Checked就麻烦了。痛苦
解决方案
解决方案二:
http://down.chinaz.com/soft/22495.htm去下载下看看吧http://down.chinaz.com/soft/22495.htmhttp://www.morecode.net/soft/html/25319.shtml
解决方案三:
这不是用javascript做的,你要在摸班列中加上checkbox然后把checkbox的oncheckedChange=XXX然后在CS中写XXX的代码,RowCommmand事件中写checkBoxch1=(checkBox)sender;来得到是哪个控件引起的事件
解决方案四:
TO:zengxie后台我做不出来,你有代码吗?TO:kong521哥们不厚道,连我的贴子内容都没看清。
解决方案五:
要用JS写你就不能在GridView中使用server控件,用HTML控件
解决方案六:
想实现gridview每行放一个checkbox?这代样的代码网上一搜一把一把的.
解决方案七:
参考:
解决方案八:
TO:gui0605<inputtype="checkbox"id="ch_zhu"name='<%#DataBinder.Eval(Container,"DataItem.bq_id")%>'onClick="ChangeSelect(this);">不知道这样能不能在后面取到他的值。我试了一下这样不行。Dimch_zhuAsSystem.Web.UI.HtmlControls.HtmlInputCheckBox=CType(GridView1.Rows(i).FindControl("ch_zhu"),System.Web.UI.HtmlControls.HtmlInputCheckBox)没有runat="server"属性不知道在后面如何取值
解决方案九:
汗,难道我说的不清楚。我是要单选,就是一行有二列checkbox引用5楼lovehongyun的回复:
想实现gridview每行放一个checkbox?这代样的代码网上一搜一把一把的.
解决方案十:
你误会了,我不是要全选/单选的功能。引用6楼insus的回复:
参考:http://blog.csdn.net/insus/archive/2008/03/09/2159352.aspx
-----------------------------------gridview一行有二个checkbox,当选择了A列那么B列的色会自动去掉,选择了B列那么A列的checkbox色会去掉A列|B列checkbox1|checkbox2
解决方案十一:
引用7楼liming_6789的回复:
TO:gui0605<inputtype="checkbox"id="ch_zhu"name='<%#DataBinder.Eval(Container,"DataItem.bq_id")%>'onClick="ChangeSelect(this);">不知道这样能不能在后面取到他的值。我试了一下这样不行。Dimch_zhuAsSystem.Web.UI.HtmlControls.HtmlInputCheckBox=CType(GridView1.Rows(i).FindControl("ch_zhu"),System.Web.UI.HtmlControls.HtmlInputCheckBox)没有runat="serv…
用FindControl是取不到html控件就是没有runat="server"标记的.不过还是能通过name来获得所选checkbox的value用Request.Form["name"]name为checkbox的name没有checkbox被选中的话Request.Form["name"]为nullVB中为nothing多个被选中的话为各个checkbox的value值用,分隔