【问题标题】:Disabling a particular row in a datatable IceFace禁用数据表 IceFace 中的特定行
【发布时间】:2016-12-13 22:24:29
【问题描述】:

我有一个显示某些数据的屏幕。我正在使用数据表选项来显示数据和行选择器来选择行。 如果我选择任何行,则会弹出一些选项,用户可以通过该选项操作数据(如编辑和删除),但我希望某些数据不可编辑。

我有一个屏幕,我在其中按月显示数据,例如,如果当前月份是 8 月,那么我的页面将显示前两个月的数据和接下来的 10 个月的数据。

现在我希望当前月份和前两个月的数据在通过行选择器选择行时不可编辑或禁用。 enter image description here

下面是我的视图页面和行选择器功能:

 <i:dataTable id="ConfigurationOne"
            headerClass="dataTableCommonHeader"
        headerClasses="table_header"
        columnClasses="stringColumn, stringColumn w80"
        rowClasses="level2ColorStyle, level1ColorStyle"
        value="#{configOneBean.monthsDateList}" var="row" cellpadding="0"
        cellspacing="1" columnWidths="50px,100px" rows="25"
        width="40%"
        onrowmouseover="this.style.cursor='default';this.style.backgroundColor='#F1F1F1'‌​;" 
        onrowmouseout="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
        >

        <i:column>
            <i:rowSelector value="#{row.selected}" 
                selectionListener="#{configOneBean.rowSelectMonthsListener}" />
            <f:facet name="header">
                <i:outputText value="#{resApp['config.type.code']}" />
            </f:facet>
            <i:panelGroup style="width:200px;overflow:hidden;">
                <i:outputText value="#{row.NRPV_NRPA_CODE}" />
            </i:panelGroup>
        </i:column>

        <i:column>

            <f:facet name="header">
                <i:outputText value="#{resApp['config.type.name']}" />
            </f:facet>
            <i:panelGroup style="width:200px;overflow:hidden;">
                <i:outputText value="#{row.NRPV_CREATED_BY}" />
            </i:panelGroup>
        </i:column>



    </i:dataTable>

public void rowSelectMonthsListener(RowSelectorEvent event) {
    int selectRow = event.getRow();
    initActionMap();
    if (event.isSelected()) {

        this.monthsDate = monthsDateList.get(selectRow);
        getAllMonthsAndDate();
        actionMap.put(WorkMode.EDIT_GROUP, true);

    } else {

        this.monthsDate = null;
        workMode = WorkMode.EMPTY;
    }
}

【问题讨论】:

    标签: javascript spring jsf icefaces


    【解决方案1】:

    rowSelector 组件确实有一个rendered 属性。如果将它绑定到一个方法以确定是否可以单击该行,这应该可以解决问题。并不是说我没有在我的代码中尝试过这个属性,但是如果没有错误,它应该工作。

    【讨论】:

    • 您好 Wis 感谢您的回复....您能否详细说明一下,或者任何示例代码都会有很大帮助:)
    • 我提出了这样的建议:&lt;i:rowSelector value="#{row.selected}" selectionListener="#{configOneBean.rowSelectMonthsListener}" rendered="configOneBean.isSelectable(row)" /&gt;,在您的托管 bean 中,您应该有一个 public boolean isSelectable(Object obj),它将根据当前日期测试您的变量 obj,并确定它是否应该是可选的.请注意,我不知道您的 obj 变量的类型,可能是 Date,可能是 Calendar(我猜,但可能是您自己的 POJO)。
    • 嗨@Wis 感谢您的回复............我已经尝试应用这个逻辑,但它会禁用所有行......我正在将数据与月份进行比较名称,如果它在数据表中找到月份,则整个数据表将被禁用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    相关资源
    最近更新 更多