Как перемещаться между строкой и страницей в Primefaces Datatable - PullRequest
1 голос
/ 09 июня 2019

Я хочу код, который перемещается между строками вверх и вниз в виде данных с двумя кнопками и в последнем ряду перейти на следующую страницу.

Я могу написать код, который перемещается между строками, но я не могу перейти на следующую страницу в последнем ряду. мой код здесь, и он имеет две функции для перемещения вверх и вниз между строками (tableWidgetVar является виджетом для датированных данных):

    downRow = function (tableWidgetVar) {
        if (PF(tableWidgetVar).selection.length === 0) {
             PF(tableWidgetVar).selectRow(0);
             return;
        }
        var index = PF(tableWidgetVar).originRowIndex;
        var rows = PF(tableWidgetVar).tbody[0].childElementCount;
        index++;

        PF(tableWidgetVar).unselectAllRows();
        PF(tableWidgetVar).selectRow(index);
        PF(tableWidgetVar).originRowIndex = index;
    },

    upRow = function (tableWidgetVar) {
        var rows = PF(tableWidgetVar).tbody[0].childElementCount;
        var index = PF(tableWidgetVar).originRowIndex;
            index--;
        PF(tableWidgetVar).unselectAllRows();
        PF(tableWidgetVar).selectRow(index);
        PF(tableWidgetVar).originRowIndex = index;
    },

у кого-нибудь есть идея перейти на следующую страницу с данными в последней строке?

Ответы [ 2 ]

2 голосов
/ 09 июня 2019

Использование:

PF(tableWidgetVar).getPaginator().next();

Информацию об источнике нумератора см. В https://github.com/primefaces/primefaces/blob/master/src/main/resources/META-INF/resources/primefaces/paginator/paginator.js

См. Также:

0 голосов
/ 09 июня 2019

Вам нужны два условия, если вы находитесь в первом ряду или в последнем ряду на странице, когда вы находитесь в последнем ряду, переходите на следующую страницу и когда вы находитесь в первом ряду, переходите на предыдущую страницу. Для этого вы должны использовать PF(tableWidgetVar).paginator. но когда вы находитесь на первой или последней странице, у вас есть два дополнительных условия, потому что у вас нет следующей или предыдущей страницы. отредактируйте ваш код так:

downRow = function (tableWidgetVar) {
    if (PF(tableWidgetVar).selection.length === 0) {
         PF(tableWidgetVar).selectRow(0);
         return;
    }
    var index = PF(tableWidgetVar).originRowIndex;
    var rows = PF(tableWidgetVar).tbody[0].childElementCount;
    index++;
    if (index === rows) {
        if (PF(tableWidgetVar).paginator.getCurrentPage() === PF(tableWidgetVar).paginator.cfg.pageCount - 1) {
            return;
        }else {
            PF(tableWidgetVar).getPaginator().next();
            \\or PF(tableWidgetVar).paginator.setPage(PF(tableWidgetVar).paginator.getCurrentPage() + 1);
            index = 0;
        }
    }
    PF(tableWidgetVar).unselectAllRows();
    PF(tableWidgetVar).selectRow(index);
    PF(tableWidgetVar).originRowIndex = index;
},

upRow = function (tableWidgetVar) {

    var rows = PF(tableWidgetVar).tbody[0].childElementCount;
    var index = PF(tableWidgetVar).originRowIndex;
    if (index === 0) {
        if(PF(tableWidgetVar).paginator.getCurrentPage()=== 0){
            return;
        }else {
            PF(tableWidgetVar).paginator.setPage(PF(tableWidgetVar).paginator.getCurrentPage() - 1);
                index = rows - 1;
        }
    } else {
        index--;
    }
    PF(tableWidgetVar).unselectAllRows();
    PF(tableWidgetVar).selectRow(index);
    PF(tableWidgetVar).originRowIndex = index;
},
...