0

同じテーブル セル内の非表示のボタンで click() を呼び出すために、datatables 行の ID を取得したいと考えています。すべてのボタンは h:commandButton のように見える必要があり、p:commandButton をそれらのように強制することができなかったため、そのように行われます。h:commandbutton には oncomplete イベントがありません。DataModel を使用できることはわかっていますが、それを行う別の方法 (JS、JQuery を使用) はありますか? hardoced id (p:table:4:hiddenButton) を入れると、すべて問題ありませんが、各セルの行番号を取得するにはどうすればよいですか??

<h:form id="p">
 <h:dataTable value="#{bean.paymentList}" var="pmt" id="table" >
   ...
    <h:column>
    <f:facet name="header">
      <h:outputText value="#{bundle.action}" />
     </f:facet>
     <h:commandButton  type="button" value="#{bundle.approve}" 
            onclick="document.getElementById('p:table:??:hiddenButton').click();" />
      <p:commandButton  id="hiddenButton" value="hidden" style="display: none;"
       oncomplete="if (#{pmt.errorsNum} > 0) {
       return confErrDial.show();
       } else {
       return confDial.show();};">
      <f:setPropertyActionListener value="#{pmt.id}" target="#{bean.holder}" />
      </p:commandButton>
     </h:column>
 </h:dataTable>
</h:form>

編集:

わかりました、JQuery を使用していくつかのトリックを行いました。うまくいかないかもしれませんが、機能します。

私がやったこと: h:commandButton に id を追加し、onclick イベントで h:commandButton の id を取得し、その id を非表示の p:commandbutton の id に置き換えたので、そのコードは次のようになりました:

<h:commandButton id="button" type="button" value="#{bundle.approve}" 
onclick="document.getElementById(($(this).attr('id')).replace('button','hiddenButton')).click();"

それでも、誰かがより良い解決策を知っているかもしれません。

PS: $(this).parent().attr('id') が null であるため、奇妙です。ID p:table:0 p:table:1 などで要素が作成されないという何かがあると思います...

4

0 に答える 0