【问题标题】:How to disable entire Primefaces dataTable如何禁用整个 Primefaces 数据表
【发布时间】:2018-05-23 10:38:35
【问题描述】:

有没有办法在 Primefaces 中禁用整个 dataTable?有人建议使用editable 组件,但这似乎没有帮助。

#{conversionRatesBean.readOnlyUser} 是过滤掉用户组的代码。

我正在使用 Primefaces 3.5JSF 2.1.6

如果不在 Primefaces 中,有人可以在 jQuery 中提出一些解决方案吗?

<div class="grid_12 width_75_pc margin_left_auto" > 
    <div class="datatable">
        <p:dataTable editable="#{!conversionRatesBean.readOnlyUser}" id="conversionRateTable" var="row" value="#{conversionRatesBean.rowNames}" rowIndexVar="rowIdx" styleClass="projectTable table-container">
            <p:column headerText="" styleClass="#{rowIdx  == -1  ? 'itPanelGreen' : 'ui-widget-header'} textAlignCenter valign-middle width_20_pc column_name" >
                            <h:outputText value="1  #{row.name} =" />
            </p:column>
            <p:columns var="column" value="#{conversionRatesBean.colNames}" headerText="#{column.name}" columnIndexVar="colIdx"
                                    styleClass="#{rowIdx == colIdx ? 'itPanelGreen' : 'textAlignCenter'}">
                  <input:decimalField beanValue="#{conversionRatesBean.conversionMap[row][column].conversionValue}"
                      errorMsg="#{msgs['errorInvalidValue']}"
                      rendered="#{rowIdx != colIdx}"
                      decimalFields="4"
                      errorDecimal="#{msgs['packaging.error.number.decimals']}"
                      styleClass="textAlignRight "
                      maxLength="9"/>
            </p:columns>
        </p:dataTable>
    </div>
</div>
<div class="actions grid_12 alpha">
        <p:commandButton id="saveBtn" value="Save" update="conversionRateTable"
            action="#{conversionRatesBean.save}"
            oncomplete = "qt.removeSavedState();"
            disabled="#{conversionRatesBean.readOnlyUser}"
            styleClass="js-saveButton button" onstart="screenUtils.triggerRequired(); if(screenUtils.errorsOnPage()){return false;}"/>

        <pretty:link mappingId="rateSelection" styleClass="displayInlineBlock margin_top_5">
            <f:param value="#{conversionRatesBean.rateId}" />
            <h:outputText value="#{msgs.backtoOverView}" styleClass="linky margin_left_10" />
        </pretty:link>
</div>

【问题讨论】:

  • 您要完全禁用什么?输入字段还是选择?
  • 整个数据表
  • 我不认为你可以禁用整个数据表。您可以禁用选择或可编辑模式。 MAyb blockUI 可以帮助您。您可以实现一个 blockUI 并创建一个小的解决方法。 primefaces.org/showcase/ui/misc/blockUI.xhtml
  • 这个想法是根据某些条件永久禁用数据表。 blockUI 有不同的用途,它只会在服务器返回响应之前禁用数据表。您能否分享一下您可能会有所帮助的解决方法?

标签: javascript jquery jsf primefaces


【解决方案1】:

我设法通过这样做解决了这个问题:

decimalField.xhtml 页面中添加了以下代码行,这实际上是输入标记的复合实现。

<composite:interface>
   <composite:attribute name="disabled" default="#{false}"/>
</composite:interface>

此后,从使用页面conversionRates.xhtml调用复合属性如下:

&lt;input:decimalField disabled="#{conversionRatesBean.readOnlyUser}"/&gt;

【讨论】:

  • 但是如果 dataTable 只包含输入字段并且如果它们被禁用,那不是和整个 dataTable 被禁用一样好吗?顺便说一句,我找不到任何方法来完全禁用 Primefaces 或 jQuery 中的整个数据表。如果您有不同的看法,请与我们分享您的想法。
  • 是的,但是您的问题完全无关紧要,因为它正常禁用事物。并发布了“解决方案”作为评论。你读了吗?
  • 如果您有适合问题标题的解决方案,请随时发布...我会更乐意接受。
  • 这并不是为了让“我的评论”被接受为答案,您也可以这样做。这是关于您的问题与您似乎遇到的问题不同(至少根据您的回答),因此投入了错误的努力,这并不总是令人愉快的体验。干杯
猜你喜欢
  • 2018-08-18
  • 1970-01-01
  • 2013-03-14
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 2015-06-19
  • 2015-01-04
  • 1970-01-01
相关资源
最近更新 更多