Когда ajax oncomplete, jquery не работает, Primefaces - PullRequest
0 голосов
/ 01 апреля 2020

Я использую этот плагин для фиксированных столбцов таблицы в моем проекте Primefaces . Работает частично.

primefaces v6.1
jQuery v1.7.1

Работает, когда;

  • p:dataTable -> <p:ajax event="page"(and rowSelect) oncomplete"..." />
  • window.onresize и загрузка окна
  • refre sh страница (F5)

Не работает, когда;

  • <p:commandButton oncoplete="..." /> эта кнопка ubdate форма.

Я делюсь подробностями проекта ниже.

Outline xhtml;

+ <p:tab>
+-   <h:form id="myForm" >
+--     <p:panelGrid>
+---         <div>
+----            <p:commandButton update=":myForm" oncomplete="load()">
+--     <p:dataTable>
           ...

Outline script;

$(document).ready(function(){
    load(); 
});

function load(){
    $("div.ui-datatable-tablewrapper").find('table').tableHeadFixer({
        left: 2
    });     
}

Как я уже сказал, он работает для dataTable ajax событие.

Но при нажатии кнопки CommandButton работает только для заголовков (thead), не работает для тела (tbody).

Как я могу исправить?

Чтобы быть более понятным, посмотрите на gif для двух столбцов, в первую очередь это работает, но измените datatable кнопкой, это не работает, и я изменяю размер окна, это работает , enter image description here

1 Ответ

0 голосов
/ 02 апреля 2020

Я исправил Primefaces Реальная проблема. Когда commandButton завершит ajax запрос, запустите любую функцию js, и эта функция вызовет p:remoteCommand.

<p:commandButton oncomplete="reload()" />
<p:remoteCommand name="remote" oncomplete="load()" />
$(document).ready(function(){
    load(); 
});
function reload(){
    remote();
}
function load(){
    $("div.ui-datatable-tablewrapper").find('table').tableHeadFixer({
        left: 2
    });     
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...