1

可能であれば、選択したプライムフェイスのセルまたはコロン(id)を取得したい<p:dataTable

私のテーブルは次のようなものです:

<p:dataTable id="table" var="list" value="#{bean.list}" rowKey="#{list}" selectionMode="single" >
    <p:ajax event="rowSelect" listener="#{bean.onRowSelect}" />
    <p:column headerText="Date" >
        <h:outputText  value="#{list.SDate}" />
    </p:column>
    <p:column headerText="Name" >
        <h:outputText value="#{list.IName}" />
    </p:column>
</p:dataTable>

この方法では、を使用して選択された行(行)を取得できますが、選択された列" "または" "<p:ajax event="rowSelect" listener="#{bean.onRowSelect}" /> を取得できません。DateName

onrowSelecteメソッドは次のようなものです:

 public void onRowSelect(SelectEvent event)
        myObject obj = (myObject)event.getObject();
        //.......
 }

タクソノミー引数(コンテキストフィルター)に対して検証を実行して、それが語彙の一部であることを確認できます。

ビューのパスを作成しますAilments/Fruit /%

他の語彙がある場合は、それぞれをAilments / Foo /%とAilments / Bar /%にします。

必要に応じて、ビューディスプレイを使用して、これらすべてのビュー間で機能の一部を共有できます。

4

4 に答える 4

2

カリム、

ajaxイベントに更新を追加するのを忘れていると思います:

<p:ajax event="rowSelect" listener="#{bean.onRowSelect}" update="table" />

テーブルupdateIDまたはテーブルをカプセル化する要素を配置する必要があります。

テーブルが outputPanel 内にある場合は、テーブルの代わりに ID を更新できます。

画面情報をbackBeanupdateに送信するために必要な属性です。

私はそれがうまくいくことを願っています...

幸運を!

于 2016-09-23T14:23:03.557 に答える
1

Primefaces には列を選択するものはないと思います。次のようなものを追加する必要があるかもしれません

<h:outputText  value="#{list.SDate}" >
<f:ajax event="select" listener="#{bean.setSelectedColumn}"/>
</h:outputText>

event.getComponent() を使用して、選択されている列をさらに判別します

于 2013-03-06T17:51:22.540 に答える
1

このようなことを行うと、特定の列の値を取得できます

<p:dataTable id="firsttable" var="list" value="#{bean.list}" rowKey="#{list}" selectionMode="single" >
     <p:column headerText="Date" >
        <h:outputText  value="#{list.SDate}" />
    </p:column>
    <p:column headerText="Name" >
        <h:outputText value="#{list.IName}" />
    </p:column>
</p:dataTable>

// This is capture the value of selected column
<h:inputText id="selectedId" value="#{bean.selectedColumn}" style="display:none">
       <f:ajax listener="#{bean.onRowSelect}"></f:ajax>
</h:inputText>

このスクリプトは、選択した行の値を取得し、inputHidden を設定します。

 jQuery.noConflict();
    $(window).load(function () {
         $(document).delegate("#firsttable td", "click", function (event) {
             var columnNumber = jQuery(this).index();//get index of clicked row
         var colval=jQuery(this).find('div span').text()); // get the column value
         $("#selectedId").val(colval); //set value in the inputtext
         $("#selectedId").change(); //this will trigger the ajax listener
       });
    });

そして、Bean定義プロパティで入力テキスト値を取得します

 String selectedColumn;

 public void onRowSelect(AjaxBehaviorEvent event) {
         String value=getSelectedColumn();
         System.out.println(value);
}
于 2013-03-07T03:01:06.710 に答える
0

PrimeFaces DataTable、widgetVar、Javascript、jQuery について:

Primefaces widgetVar を使用して PrimeFaces 3.5 DataTable の選択された行を取得するのに問題がありました。ここでPFソースを調べました...

https://code.google.com/p/primefaces/source/browse/primefaces/trunk/src/main/resources/META-INF/resources/primefaces/datatable/datatable.js?r=10301

...また、Chrome デバッガーを使用して DataTable を調べましたが、getSelectedRow メソッドが見つかりませんでした。私はおそらく何か役に立つものを見逃していましたが、ここに私のハックがあります。

var selectedRow = Array(); $('#idForm1\\:idDT tr.ui-state-highlight').each(function(i) { $(this).children('td').each(function(ii) { selectedRow.push($(this).text()); }); });

配列 selectedRow には<td>、選択された DataTable 行のテキスト値が取り込まれます。

于 2014-07-09T23:42:10.960 に答える