JSF扩展数据表排序和筛选

时间:2013-01-31 14:24:18

标签: javascript jsf richfaces

我有一个扩展数据表,RICHFACES 3.3.3,启用了排序和过滤。该表是动态呈现的。根据要求,我需要在显示表时禁用某些行(包含可编辑的字段)。

我在Javascript函数rowBlur()中编写了该逻辑,并在显示页面时调用它。因此,在加载表时,将按预期禁用所需的行。问题是每当我对表进行过滤/排序时,禁用的行再次启用。

有什么办法可以在过滤或排序时调用javascript函数吗?

以下是代码:

HtmlExtendedDataTable dynamicDataTable = new HtmlExtendedDataTable();
dynamicDataTable.setOnkeydown("filterAllOnEnter(event)");

function filterAllOnEnter(event) {
    if(event.keyCode == 13) {
        jQuery(".rich-filter-input").blur();
        rowblur();
        return false;
    } else
        return true;
}

// js code////////////
<script>
function show(){
    val = '${myController.mergeWorkMap}';
}
</script>
<script>
function rowblur(){
for(var i=0;i<7;i++){
    var firstCol = "myForm:dynamicTable:"+i+":col0" ;
    var secondCol = "myForm:dynamicTable:"+i+":col1" ;
    var merge =document.getElementById(firstCol).textContent;
    var work =document.getElementById(secondCol).textContent;
    var obj = JSON.parse(val).mergeWorkMap;
    if(!(work == obj[merge])){
        var col3 = "myForm:dynamicTable:" + i + ":col3";
        var col4 = "myForm:dynamicTable:" + i + ":col4";
        var col5 = "myForm:dynamicTable:" + i + ":col5";
        var col6 = "myForm:dynamicTable:" + i + ":col6";
        document.getElementById(col3).disabled = true;
        document.getElementById(col4).disabled = true;
        document.getElementById(col5).disabled = true; 
        document.getElementById(col6).disabled = true;
    }

}
}
</script>

rowblur()无法正常进行过滤,而对列进行排序则根本不起作用。

0 个答案:

没有答案