2013-09-26 34 views
0

我有一個類似於上面的代碼的數據表,你可以看到,即時使用事件rowSelectedcheckBox,有什麼辦法知道被點擊的行,並根據該信息完全禁用該行?獲取行ID數據表格

<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> 
+0

你想要什麼?你想禁用選定的行/行嗎?一旦你禁用一行,你不能啓用該行/行。這是你的要求嗎? – Diganta

+0

就像一個「切換」(當選中時,將激活輸入文本;當沒有時,將被停用) – Sergio

回答

-1

您可以使用Datatable的rowIndex屬性。您可以在StyleClass中使用rowIndex,並在點擊調用javascript方法時進行綁定。通過將有rowIndex的類獲取該行。

您也可以參考這個

Primefaces example

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> 
+0

感謝您的迴應,我更喜歡在primefaces方式更多的解決方案(即沒有硬編碼的JavaScript) – Sergio

+0

@Chechus根據對我來說,''中沒有屬性,您可以通過它禁用,啓用一行。所以沒有可能的方法來禁用,啓用''的行而不使用JavaScript。如果你找到更好的方法,請讓我知道。謝謝 – Diganta