3

私はp:datatableプライムフェイスを持っており、データテーブルで行イベントを選択するさまざまな方法に対してさまざまなリスナーを持っています。

テーブルで選択した行が既に選択されていることを確認する必要があります。どうすれば確認できますか?

p:blockUI既に選択されているテーブルの行を選択したときに実行されないので、これが必要です。

私のページコードがあります:

...
<pe:blockUI autoShow="true" 
            source="itemsDT" 
            event="rowSelect" 
            target=":processTab">
    <au:loading />                                    
</pe:blockUI>
<p:dataTable widgetVar="processesTable" 
             id="itemsDT" 
             var="item" 
             value="    
             {tasksbacking2.availableProcesses}" 
             selection="#{tasksbacking2.selectedProcess}" 
             rowKey="#{item.id}"
             tableStyleClass="table
             table-condensed table-bordered"   
             resizableColumns="true">

    <p:ajax event="rowSelect" 
            listener="#{tasksbacking2.onClickFillDetails}" 
            update="@this,:processTab,:menuForm:menuBar" />
    ...
</p:dataTable>
...

マネージド Bean には、次のリスナーがあります。

...
public void onClickFillDetails(SelectEvent event) {
      AnoProcess clickedProcess = (AnoProcess) event.getObject();
      setSelectedProcess(clickedProcess);
      Movement currentMovement = this.getProcessesLastMovement().get(clickedProcess);
      if (currentMovement != null && !currentMovement.isViewed()) {
            markAsRead(processes);
      }
   ...
}
4

2 に答える 2

2

これは、同じ行での重複クリックをチェックするスクリプトです。
このスクリプトをp:dataTableコードの下に配置します。

<script type="text/javascript">
    var prevRow ;
    function checkDupRowClick(){
        var currRow = $('tr.ui-widget-content.ui-datatable-selectable[aria-selected="true"]');
        if($(currRow).is($(prevRow))){
            //selected or clicked same row so return FALSE to prevent p:ajax from executing
            return false;
        }else{
            //selected or clicked different row so return TRUE to allow p:ajax to execute
            prevRow = currRow;
            return true;
        } 
    }
</script>

AND 関数を戻りパラメータとして使用p:ajax

<p:ajax event="rowSelect" onstart="return checkDupRowClick();" />

さらに説明が必要な場合は、コメントを投稿してください。

于 2014-10-15T07:19:48.600 に答える
1

必要なのはjsの関数であり、これをonstartに適用すると思います。

そのように

<p:ajax event="rowSelect" onstart="???" />
于 2014-10-10T13:27:59.793 に答える