如何在 Primefaces 数据表中的行和页之间移动

How move between row and page in Primefaces Datatable

我想要一个代码,它可以通过放置两个按钮在数据表中上下行之间移动,并在最后一行转到下一页。

我可以编写在行之间移动的代码,但我无法转到最后一行的下一页。我的代码在这里,它有两个在行之间上下移动的功能(tableWidgetVar 是数据表 widgetvar):

    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;
    },

是否知道转到最后一行的下一个数据表页面?

使用:

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

有关分页器的来源,请参阅https://github.com/primefaces/primefaces/blob/master/src/main/resources/META-INF/resources/primefaces/paginator/paginator.js

另请参阅:

  • How can I get a PrimeFaces widgetVar function list?

你需要两个条件,如果你在页面的第一行或最后一行,当你在最后一行时转到下一页,当你在第一行时转到上一页 page.for这你必须使用 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;
},