0

我有一个类似于上面代码的数据表,如您所见,我使用事件 rowSelectedcheckBox,有什么方法可以知道被单击的行并根据该信息完全禁用该行?

 <p:dataTable id="tblTipoCarteraGeneric" style="text-align:left;" 
                     value="#{alertasPredefinidasModel.tipoCarteraDTOs}"
                     var="tipoCartera"
                     rows="15" paginator="true"
                     emptyMessage="empty"
                     paginatorAlwaysVisible="true" 
                     paginatorPosition="bottom"                         
                     selection="#{alertasPredefinidasModel.elementoSeleccionado.tipoCarteraDTOs}"
                     rowKey="#{tipoCartera.tipoCarteraDTO.tipocarteraID}"
                     rendered="#{alertasPredefinidasModel.isTipoCartera()}">

            <p:ajax event="rowSelectCheckbox" update=":form:tblTipoCarteraGeneric, :form:messages" 
                    listener="#{alertasPredefinidasController.onRowSelected}"/>
            <p:ajax event="rowUnselectCheckbox" update=":form:tblTipoCarteraGeneric, :form:messages" 
                    listener="#{alertasPredefinidasController.onRowUnselected}"/>

            <p:column selectionMode="multiple" styleClass="selection-column no-all"
                      disabledSelection="#{alertasPredefinidasModel.modoDetalle}"/>

            <p:column headerText="Tipo de cartera" styleClass="wrappedText" >
                <h:outputText id="inTxtCol1" value="#{tipoCartera.tipoCarteraDTO.nombre}" />
            </p:column>
            <p:column headerText="Valor del abono" styleClass="wrappedText" rendered="#{alertasPredefinidasModel.isTipoCarteraConValorOpcion2()}">
                <h:inputText id="inTxtCol2" value="#{tipoCartera.parametro1}" style="width:100%" 
                             disabled="#{alertasPredefinidasModel.modoDetalle}"/>
                <pe:tooltip myPosition="top center" atPosition="bottom right" for="inTxtCol2"                                       
                            value="#{tooltips.obtainToolTip('parametrizarAlertasPredefinidas', 'inTxtCol2', 'es', 'itac.SIT-Core-Middleware-Sarlaft-WAR.tooltip')} "/>
            </p:column>
            <p:column headerText="Porcentaje superior al valor del abono" styleClass="wrappedText" rendered="#{alertasPredefinidasModel.isTipoCarteraConValorOpcion2()}">
                <h:inputText id="inTxtCol3" value="#{tipoCartera.parametro2}" style="width:100%" 
                             disabled="#{alertasPredefinidasModel.modoDetalle}"/>
                <pe:tooltip myPosition="top center" atPosition="bottom right" for="inTxtCol3"                                       
                            value="#{tooltips.obtainToolTip('parametrizarAlertasPredefinidas', 'inTxtCol3', 'es', 'itac.SIT-Core-Middleware-Sarlaft-WAR.tooltip')} "/>
            </p:column>
        </p:dataTable>
4

2 回答 2

1

我认为这将满足您的要求。styleClass="tblTipoCarteraGeneric"我为您添加了一个额外的属性<p:dataTable>并添加了两个<p:ajax>事件page(因为在页面更改后以保持上一页的用户交互记录相同)和toggleSelect(如果用户选择标题复选框而不是使用每行的单检查框)。

假设你<p:dataTable>的包装是这样的:

<h:form>
<p:dataTable id="tblTipoCarteraGeneric" styleClass="tblTipoCarteraGeneric" ......>
    <p:ajax event="rowSelectCheckbox" oncomplete="abcd()" />
    <p:ajax event="page" oncomplete="abcd()" />
    <p:ajax event="toggleSelect" oncomplete="abcd()" />

    <p:column></p:column>
    ..
    ..
    ..
    <p:column></p:column>
</p:dataTable>
<h:outputScript>var abcd = function(){

    $('div.tblTipoCarteraGeneric >div > table > tbody > tr').each(function(){
        if($(this).hasClass('ui-state-highlight')){
            $(this).css({'pointer-events': 'none'});
        } else {
        $(this).css({'pointer-events': 'auto'});
        }
    });
    };
</h:outputScript>
</form>
于 2013-09-27T20:35:39.553 回答
-1

您可以使用 Datatable 的 rowIndex 属性。您可以在 StyleClass 中使用 rowIndex 并在单击调用 javascript 方法时绑定。通过将具有 rowIndex 的类获取行。

你也可以参考这个

Primefaces 示例

于 2013-09-27T07:46:24.870 回答