关于jsf中datatable中的一些问题

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

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

function   selectall(){
    var   f   =   document.表单名;
    for   (i=0;i <f.elements.length;i++)
        if   (f.elements[i].name== "定义的id名称 ")   f.elements[i].checked   =   v;
}
变化一下就是了

我先去试一下这个   我做的项目是jsf的  
<h:selectBooleanCheckbox   id= "checkit "   value= "#{bean.innerId} "   />

我这么写居然编译出来的源文件没value绑定

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

有启发了

关注!

你可能感兴趣的:(数据结构,bean,JSF,F#)