[ECSide] 认为列表左侧checkbox有严重bug!
sharong
2007-05-18
这些代码都是从demoAction.jsp例子修改而来。可直接替换这个文件的相应位置。
我在列表页面的ec:extend中有两个button,一个是"查验",一个是“删除”,这两个按钮的操作方式都是先选中若干条数据,然后单击按钮进行操作,具体操作实际是对字段进行置位,也就是执行update操作。 我在页面中的button按钮的ec:extend代码如下: <ec:extend location="right"> <div style="text-align:right;padding:1px" > <button type="button" onclick="updateForCheck('${ecTableId}');" style="width:60px" ><font color="red">查验</font></button> <button type="button" onclick="window.location='<%=contextPath%>/demo.do?operation=insert';" style="width:60px" ><font color="red">新增</font></button> <button type="button" onclick="deleteSelected('${ecTableId}');" style="width:60px" ><font color="red">删除</font></button> </div> </ec:extend> 查验和删除都调用了js方法,两个方法如下,我没有使用ajax: function updateForCheck(formid){ //alert('formid = '+formid); //document. document.getElementById("ec").action = APP_PATH+"/demo.do?operation=operate"; document.getElementById("ec").target = "_self"; document.getElementById("ec").submit(); } function deleteSelected(formid){ document.getElementById("ec").action = APP_PATH+"/demo.do?operation=delete"; document.getElementById("ec").target = "_self"; document.getElementById("ec").submit(); } 按照这种方式可以提交表单,但是我发现,如果先选择几条数据,执行删除之后,接着不选择数据,直接按“查验”按钮,会把刚才删除过的那些数据的某个字段进行置位。 也就是列表里保存了上一次执行批量操作的checkbox的值,这应该是一个严重问题。 通过调试,我发现在以下struts的action类里的代码 String[] id = request.getParameterValues("id"); 在第二次执行“查验”按钮,没有选择数据的情况下,仍然可以获得第一次执行“删除”时选择的值,请fins查一下这是怎么回事 顺便问一下,如果用ajax实现批量update,我这里不是在列表页中修改某个字段的值然后保存,而是直接对选中的多个字段的数据表中的某个字段置位,应该看哪个例子中的ajax代码? 看了一下demoAction.jsp中的saveUserInfo(formid)方法,没大看懂。 |
|
fins
2007-05-18
你这个原因是由于 那些被选中的参数被 ec的 自动保留表单域的功能给保留了
你可以看一下页面源代码,里面有很多 hidden区域,名字肯定就叫id 你可以使用 <ec:table excludeParameters="id,qqq,www,任何你不希望被保留的表单域的名字...." 的方式来解决 |
|
sharong
2007-05-18
fins什么时候可以完成文档啊,像这种功能,你不说,我估计没什么人知道,刚才试了一下,这样设置确实可以,呵呵
|
|
fins
2007-05-18
说到痛处了 :'(
|
|
wang-dell
2007-05-18
我也好希望fins能完成文档哦!
|