询问者
数据控件repeater所有的复选不可用了。

问题
-
控件repeater,中间加了一些列,内嵌了控件checkbox,在repeater的顶部有一个全选的checkbox,在客户端用js全选中列checkbox,之前一直都是正常的,点击顶部的,可以全选和撤销一列。但是,今天操作时,发现整个系统的全选功能都失效了,我右键查看源码,仔细检查发现,生成的控件id变了,
else//列
{for (i = 0; i <= txtRows; i++) {
str_e = "rpt_list__ctl" + i + "_" + source;if (e.checked) {
document.getElementById(str_e).checked = true;
}
else {
document.getElementById(str_e).checked = false;
}
}
}这里是循环列,之前都是这样写的,测试没有任何问题,最近才发现问题,我发现生成的控件id变了: <input id="rpt_list_ctl01_gdgl_comp_flag" type="checkbox" name="rpt_list$ctl01$gdgl_comp_flag" />
应该这样才对: <input id="rpt_list_ctl0_gdgl_comp_flag" type="checkbox" name="rpt_list$ctl0$gdgl_comp_flag" />
不明白了,所有的页面都这样,怎么回事啊。
全部回复
-
控件repeater,中间加了一些列,内嵌了控件checkbox,在repeater的顶部有一个全选的checkbox,在客户端用js全选中列checkbox,之前一直都是正常的,点击顶部的,可以全选和撤销一列。但是,今天操作时,发现整个系统的全选功能都失效了,我右键查看源码,仔细检查发现,生成的控件id变了,
else//列
{for (i = 0; i <= txtRows; i++) {
str_e = "rpt_list__ctl" + i + "_" + source;if (e.checked) {
document.getElementById(str_e).checked = true;
}
else {
document.getElementById(str_e).checked = false;
}
}
}这里是循环列,之前都是这样写的,测试没有任何问题,最近才发现问题,我发现生成的控件id变了: <input id="rpt_list_ctl01_gdgl_comp_flag" type="checkbox" name="rpt_list$ctl01$gdgl_comp_flag" />
应该这样才对: <input id="rpt_list_ctl0_gdgl_comp_flag" type="checkbox" name="rpt_list$ctl0$gdgl_comp_flag" />
不明白了,所有的页面都这样,怎么回事啊。
不清楚具体情况。我建议你使用jQuery,尝试这样做(参考代码,具体自己可以根据实际情况修改)假设顶部的复选框是:AllCheck,这个Id是不变的,建议使用纯Html控件,默认checked=""。那么——
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.2.min.js"></script>
<script>
$(function(){$("#AllCheck").click(function(){
$(":checkbox").each(function(){
if($(this).index()>0) //排除自身CheckBox
{
$(this).attr("checked", $("#AllCheck").attr("checked"));
}
}):
}):})
</script>
如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者
If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处 -
晕死,我查看了另一套系统,在repeater中生成的第一行的控件id又是这样: <input id="rpt_list__ctl1_jkgl_comp_flag" type="checkbox" name="rpt_list:_ctl1:jkgl_comp_flag" />
为什么现在不正常的又多了一个0啊,怎么控制的啊?彻底晕了:<input id="rpt_list_ctl01_gdgl_comp_flag" type="checkbox" name="rpt_list$ctl01$gdgl_comp_flag" />,我不要这个0出现,该如何?
-
檢查看看你的CheckBox的ClientIDMode是否為AutoID,預設應該是Inherit。
以上說明若有錯誤請指教,謝謝。
http://www.dotblogs.com.tw/terrychuang/ -
晕死,我查看了另一套系统,在repeater中生成的第一行的控件id又是这样: <input id="rpt_list__ctl1_jkgl_comp_flag" type="checkbox" name="rpt_list:_ctl1:jkgl_comp_flag" />
为什么现在不正常的又多了一个0啊,怎么控制的啊?彻底晕了:<input id="rpt_list_ctl01_gdgl_comp_flag" type="checkbox" name="rpt_list$ctl01$gdgl_comp_flag" />,我不要这个0出现,该如何?
如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者
If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处 -
查看看你的CheckBox的ClientIDMode是否為AutoID
我用的vs2008,查看了checkbox的属性,都没这个啊。
-
一句话,无论用jquery,还是javascript,都要找到那个生成的客户端控件,对不对。现在的情况是客户端控件生成的控件有问题,用什么方法都是白搭啊。
我再说一下,我的异常问题,可能有人没看明白。
我把checkbox服务端控件,放入到一个repeater中,相当于他的子控件,他会生成对应的客户端控件。
在网页上右键,可以查看到。<input id="rpt_list__ctl1_jkgl_comp_flag" type="checkbox" name="rpt_list:_ctl1:jkgl_comp_flag" />,
而现在生成的,<input id="rpt_list__ctl01_jkgl_comp_flag" type="checkbox" name="rpt_list:_ctl01:jkgl_comp_flag" />多了一个0,导致找不到这个控件。我就不明白repeater生成子控件的原理,怎么会多出一个0来
- 已编辑 fangyanqin 2011年7月26日 7:06 补充
-
一句话,无论用jquery,还是javascript,都要找到那个生成的客户端控件,对不对。现在的情况是客户端控件生成的控件有问题,用什么方法都是白搭啊。
我再说一下,我的异常问题,可能有人没看明白。
我把checkbox服务端控件,放入到一个repeater中,相当于他的子控件,他会生成对应的客户端控件。
在网页上右键,可以查看到。<input id="rpt_list__ctl1_jkgl_comp_flag" type="checkbox" name="rpt_list:_ctl1:jkgl_comp_flag" />,
而现在生成的,<input id="rpt_list__ctl01_jkgl_comp_flag" type="checkbox" name="rpt_list:_ctl01:jkgl_comp_flag" />多了一个0,导致找不到这个控件。我就不明白repeater生成子控件的原理,怎么会多出一个0来
哦,我的意思是——你把全选(全不选)的按钮单独弄一个Html的纯代码。然后在<ItemTemplate>中存放服务端控件的CheckBox,然后使用我的代码,应该可以的。因为jQuery的选择器(:checkbox)只要类型是checkbox的都会进行行为操作——无论是那个checkbox,这样就不一定依赖具体的id了。
关键——只要保证“全选/全部选“的按钮的id唯一。所以要你使用纯HTML的。底下每一个记录都可以用checkbox服务端控件,通过jQuery特殊的Selector来完成。
如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者
If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处 -
看上去用jquery是解决问题了,但是,我这里是多列数据,列头都有一个全选的checkbox控件,按你这意思,那其他列也会被勾选,对吧,那就不好了。各个列应该互相不影响。
可以展示你的aspx代码吗?目前的,错误的代码。看看你的Checkbox怎么回事
如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者
If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处