微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

只能对几行禁用行选择-Primefaces

如何解决只能对几行禁用行选择-Primefaces

| 我想知道是否有一种方法可以基于bean属性对Primefaces中给定的一组行禁用基于无线电的行选择。 例:
<p:dataTable var=\"foo\" value=\"#{bean.foos}\" selection=\"#{bean.selectedFoo}\">`
    <p:column selectionMode=\"single\" />
    <p:column>
        <h:outputText value=\"#{foo.bar}\" />
    </p:column>
<p:dataTable>
在这种情况下,想象一下我想禁用
foo.bar == 1,5,10
的行,方法是禁用行,即禁用与该行关联的单选按钮。 我想不出一种方法来实现...任何想法?甚至CSS + JavaScript hack解决方案也是可以接受的。     

解决方法

        从4.0版本开始,Primefaces数据表带有
disabledSelection
属性。
<p:dataTable var=\"foo\" value=\"#{bean.foos}\" selection=\"#{bean.selectedFoo}\" disabledSelection=\"#{foo.bar == 1}\">
    <p:column selectionMode=\"single\" />
    <p:column>
        <h:outputText value=\"#{foo.bar}\" />
    </p:column>
<p:dataTable>
然后,当
foo.bar == 1
为true时,此复选框将被禁用。     ,        选中此链接方式可禁用行选择复选框。唯一的区别是,在您的情况下,它是单个选择,但这不会影响给定的解决方案。     ,        您可以尝试使用Jquery禁用,如下所示
<script type=\"text/javascript\" src=\"jquery.js\"></script>
        <script>
         $(function(){
              $(\"#myform  input[type = radio]:nth(1)\").attr(\'disabled\',\'disabled\');
        });
</script>
myform:您的表单名称 代替nth(1) 您可以提及要显示的行号。     ,        我遇到了同样的问题,我只想基于bean属性禁用某些行(单行或多行)。对我来说,简短的答案是仅隐藏该行中的单选框/复选框,以便无法选择它。我的需求要求我能够在运行时处理其他选择。这意味着我必须确保在进行任何进一步选择之前,物理上未选择行,以便在后续处理中不对它们进行重新处理,因此请注意该条件。 这是我所做的,对于将来可能会偶然发现此问题的其他人。 1)在p:datatable中,我添加了rowStyleClass属性,并根据bean标准提供了一个类,例如:'is-selectable \'或\'not-selectable \'。
rowStyleClass=\"#{myBean.alreadyProcessedList.contains(item) ? \'not-selectable\' : \'is-selectable\'}\"
在我的运行时过程中,将选定的行添加到此列表中,以便一旦在处理后再次呈现表单,它们将变为“不可选择”。您的初始加载应该已经将不可选择的行添加到列表中,或者处理您需要的任何情况。 2)定义CSS以使.not-selectable隐藏单选框/复选框。必须使用\'!important \'覆盖嵌入式样式。
tr.not-selectable  div.ui-radiobutton,tr.not-selectable  div.ui-chkbox {
    visibility: hidden !important;
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。