2013-09-26 2 views
0

위의 코드와 같은 dataTable이 있습니다. 볼 수 있듯이, 이벤트 rowSelectedcheckBox를 사용하면 클릭 한 행을 알 수 있고 해당 정보를 기반으로 행을 완전히 비활성화 할 수 있습니다.get row id dataTable primefaces

<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

당신이 원하는 무엇을 : 당신의 <p:dataTable>가 같이 포장되어있는 경우

은 가정? 선택한 행/행을 비활성화 하시겠습니까? 행을 비활성화하면 해당 행/행을 활성화 할 수 없습니다. 이게 당신의 요구 사항입니까? – Diganta

+0

"토글"(선택하면 입력 텍스트를 활성화합니다. 활성화되지 않을 경우 비활성화됩니다) – Sergio

답변

-1

Datatable의 rowIndex 속성을 사용할 수 있습니다. StyleClass에서 rowIndex를 사용하고 click on javascript 메서드를 호출하면 바인딩 할 수 있습니다. rowIndex를 가지는 클래스를 통해서 행을 가져옵니다.

또한이

Primefaces example

1

나는이 귀하의 요구 사항을 충족 생각을 참조 할 수 있습니다. 하나의 추가 속성 인 styleClass="tblTipoCarteraGeneric"<p:dataTable>에 추가하고 page (이전 페이지의 사용자 상호 작용 기록을 동일하게 유지하기 때문에) 및 toggleSelect (사용자가 각 행의 singe chek 상자를 사용하는 대신 헤더 체크 박스를 선택하면)이 page<p:ajax> 두 개를 추가합니다.

<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

답장을 보내 주셔서 감사합니다. 저는 정사각형 방식으로 솔루션을 더 선호합니다 (하드 코딩되지 않은 자바 스크립트) – Sergio

+0

@Chechus 나에게''에는 어떤 속성이 없기 때문에 당신은 그 행을 사용 불가능하게하거나 가능하게 할 수있다. 그러므로, 자바 스크립트를 사용하지 않고''의 행을 사용 불가능하게 할 수있는 방법은 없습니다. 더 좋은 방법을 찾으면 알려주세요. 고맙습니다 – Diganta