日期:2014-05-18  浏览次数:20696 次

jsf datatable中的selectBooleanCheckbox全选及删除问题!
table的行头有一个selectBooleanCheckbox,点它会全选/全不选下面的所有selectBooleanCheckbox,这时得到每个BEAN的innerId,放到js的数组中,通过一个总的 "删除 "按纽删除他们

      单选每个selectBooleanCheckbox时,它的onclick可以得到innerId,但是怎么在全选时候得到所有行(bean)的innerId呢?




------解决方案--------------------
我没做过,不过,我的思路是这样的:
首先:行头的checkbox是个单独的,下面的checkbox是一组同名不同值的.
其次行头的checkbox上面有事件来判断是否击他了,然后通过js判断是选中还是没有选中,如果他被选中了,下面的一组同名checkbox(在js中可以得到这样一个数组的)都被选中,即checked属性为true.不选同理.
最后,想要得到下面的checkbox就可以用他们的名称得到一个数组,遍历数组.
------解决方案--------------------
function selectall(){
var f = document.表单名;
for (i=0;i <f.elements.length;i++)
if (f.elements[i].name== "定义的id名称 ") f.elements[i].checked = v;
}
变化一下就是了
------解决方案--------------------
datatable都是和后台数据邦定的,你在这个上面操作,会直接体现到后台的邦定的数据源(比如:List)
selectBooleanCheckbox,需要给的应该是一个boolean类型,而不是id

而按照你的思路,完全可以这样,这里假设你传过来的数据源是(List)

我不知道你的bean 的结构,但是必须有一个属性是boolean,来表示该条记录是否被选中,这里假设这个属性为
private boolean select;

<h:selectBooleanCheckbox id= "checkit " value= "#{bean.select} " />
List中包含的是bean,当你选中后,执行删除操作, backbean中写一个删除动作,直接遍历List中的bean 的select属性,看是否为true,为true 就删除该条记录,否则就不做操作。。。
------解决方案--------------------
你在bean中定义一个String innerId[];在你进行全选的时候会将你所选择的innerId值以数组的形式放到这个innerId[]数组中,你就可以得到你所选择的innerId的值。
------解决方案--------------------
jsf的datatable解析命名规则是[form名][table名][行次][控件名],因此只要知道table的最大行次就可以了,就使用[form名][table名].length就可以得到它的最大行次,然后循环处理就行了
------解决方案--------------------
jf
------解决方案--------------------
有启发了