一行如何在<p:dataTable>中展开?

Dig*_*nta 6 datatable primefaces jsf-2

在我的应用我有一个<p:datatable>rowExpansion列.我要求一次打开一行.如果有人试图扩展第二行,剩下的第一行展开,那么将生成一条消息说First close the expanded row and then open another row.

如何实现?任何指针都对我很有帮助.谢谢

Ant*_*ton 8

截至2015年,这个问题首先出现在谷歌搜索结果中,我想补充一点,对于PrimeFaces 5.1,有dataTable属性rowExpandMode,当设置为single- 时只允许显示一行.例:

<p:dataTable var="line" value="#{bean.lines}" rowExpandMode="single">
Run Code Online (Sandbox Code Playgroud)

这不是所要求的,但我希望它对其他人有所帮助.


Ron*_*yen 5

您可以使用(我在mojarra 2.1.20和Primefaces 3.5中测试过它并且它工作正常)以下解决方案在扩展行时调用JavaScript函数.当单击第二行,并且有另一个展开的行时,它将触发一个click事件,该事件将依次折叠先前打开的行.

XHTML:

<p:ajax event="rowToggle" onstart="test();"/>  
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

<script type="text/javascript">
    function test(){
        var i = $('.ui-row-toggler.ui-icon-circle-triangle-s').length;
        if(i == 1){return;}
            $('.ui-row-toggler.ui-icon-circle-triangle-s').trigger('click');
    }
</script>
Run Code Online (Sandbox Code Playgroud)