问题描述
checkboxlist是用SqlDataSource绑定的,程序需完成的效果如图;repeater与checkboxlist分开绑定的。在进行选择完成后,提交获取每个checkboxlist中选中的值;checkboxlist长度可能改变。for(inti=0;i<rep_dlist.Items.Count;i++){intdID=Convert.ToInt32(((Label)this.rep_dlist.Items[i].FindControl("lbl_UDepartID")).Text);CheckBoxListcbl=(CheckBoxList)rep_dlist.Items[i].FindControl("cbl_arealist");for(intj=0;j<cbl.Items.Count;j++){if(cbl.Items[j].Selected){}}}这样无法获取到值!
解决方案
解决方案二:
是不是提交的时候又重新绑定了?
解决方案三:
这个问题的原因是,repeater在前台生成html每一行的checkbox的id都是不同的。你可以直接在前台生成的html看一下就知道了。前台的checkbox的id是类似cbl_arealist1,cbl_arealist2,cbl_arealist3........这样的。我觉得,楼主可以先通过jquery获取到选中项,然后通过ajax提交给后台处理。jquery中的获取checkbox选中项,大致代码如下$('input[id^="cbl_arealist"]').is(':checked');
解决方案四:
引用2楼hanjun0612的回复:
这个问题的原因是,repeater在前台生成html每一行的checkbox的id都是不同的。你可以直接在前台生成的html看一下就知道了。前台的checkbox的id是类似cbl_arealist1,cbl_arealist2,cbl_arealist3........这样的。我觉得,楼主可以先通过jquery获取到选中项,然后通过ajax提交给后台处理。jquery中的获取checkbox选中项,大致代码如下$('input[id^="cbl_arealist"]').is(':checked');
嗯,确实ID是不一样的,这个我看过,我就是在想除了ajax就没有其他方法了吗?
解决方案五:
引用3楼panyanli670的回复:
Quote: 引用2楼hanjun0612的回复:
这个问题的原因是,repeater在前台生成html每一行的checkbox的id都是不同的。你可以直接在前台生成的html看一下就知道了。前台的checkbox的id是类似cbl_arealist1,cbl_arealist2,cbl_arealist3........这样的。我觉得,楼主可以先通过jquery获取到选中项,然后通过ajax提交给后台处理。jquery中的获取checkbox选中项,大致代码如下$('input[id^="cbl_arealist"]').is(':checked');嗯,确实ID是不一样的,这个我看过,我就是在想除了ajax就没有其他方法了吗?
其实,不用ajax,那你可以通过jquery控制checkbox的选中事件,然后在选中时,把所有的checkbox的值,存到hidden控件中。这样后台就可以使用hidden来获得所有的选中值了
解决方案六:
需要做2次循环吧,先是循Repeater,然后再循环checkboxlist.
解决方案七:
在repeater绑定事件OnItemDataBound中取获得就可以了protectedvoidre1_OnItemDataBound(objectsender,RepeaterItemEventArgse){if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem){CheckBoxListcl=e.Item.FindControl("cbl_arealist")asCheckBoxList;//找到里层的CheckBoxList对象//这里取值strings=cl.Value;}}