19

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ハックソリューションでも受け入れられます。

4

4 に答える 4

23

4.0バージョン以降、Primefacesdatatableには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の場合、チェックボックスは無効になります。

于 2017-09-26T12:29:25.073 に答える
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;
}
于 2017-10-19T21:58:25.163 に答える
0

次のようにJqueryで無効化を試すことができます

<script type="text/javascript" src="jquery.js"></script>
        <script>
         $(function(){
              $("#myform  input[type = radio]:nth(1)").attr('disabled', 'disabled');
        });
</script>

myform:your Form Name nth(1)の代わりに、表示する行番号を指定できます。

于 2011-06-20T06:40:45.107 に答える
-1

プロパティdisabledSelectionを設定します(trueの場合、行の選択を無効にします。p:columnのdisabledSelection属性をオーバーライドします。例:var = "xxx" disableSelection = "#{xxx.year> 1960}"

于 2020-05-19T10:11:41.657 に答える