Tôi muốn cho phép người dùng chỉnh sửa ô trong bảng dữ liệu chỉ khi đáp ứng một số điều kiện.Chỉnh sửa ô điều kiện trong PrimeFaces datatable
Ban đầu tôi đã cố gắng <choose>
để đạt được điều này:
<p:dataTable var="item" value="${bean.items}" editable="true" editMode="cell">
<p:column headerText="column A">
<c:choose>
<c:when test="${item.isEditable}">
<p:cellEditor id="title">
<f:facet name="output">
<h:outputText value="#{item.title}"/>
</f:facet>
<f:facet name="input">
<p:inputText value="#{item.title}"/>
</f:facet>
</p:cellEditor>
</c:when>
<c:otherwise>
<h:outputText value="#{item.title}"/>
</c:otherwise>
</c:choose>
</p:column>
...
nhưng nó không hoạt động. Một cách tiếp cận khác là sử dụng thuộc tính rendered
:
<p:column headerText="column A">
<p:cellEditor rendered="${item.isEditable}">
<f:facet name="output">
<h:outputText value="#{item.title}"/>
</f:facet>
<f:facet name="input">
<p:inputText value="#{item.title}"/>
</f:facet>
</p:cellEditor>
<h:outputText value="#{item.title}" rendered="#{!item.isEditable}"/>
</p:column>
hoạt động tốt - người dùng chỉ có thể chỉnh sửa các ô được phép.
Nhưng ngay cả khi ô không thể chỉnh sửa, nó vẫn có lớp ui-cell-editing
và trông giống như ô có thể chỉnh sửa cho người dùng.
Cách chính xác để áp dụng điều kiện cho chỉnh sửa ô là gì?
Cảm ơn bạn!
cảm ơn bạn @BalusC Tôi chắc chắn sẽ cố gắng sử dụng renderer tùy chỉnh và gửi kết quả ở đây. Cảm ơn bạn rất nhiều cho câu trả lời toàn diện! – Meta
Bạn được chào đón. – BalusC
Cảm ơn bạn rất nhiều vì điều này, tôi sẽ làm việc trên một yêu cầu kéo để nhân rộng hành vi này. –