AppMaker - перейти к последней странице таблицы - PullRequest
0 голосов
/ 24 сентября 2018

Сценарий: у меня есть вычисленный SQL, который возвращает 100 результатов.Добавил таблицу (из этого вычисленного SQL) и ограничил размер страницы 25 результатами.Это создаст 4 страницы.Форма пейджера AppMaker работает хорошо (перемещается между страницами), но мне нужна кнопка, которая перемещается непосредственно со страницы 1 на страницу 4. Возможно ли это?Кто-нибудь получил решение для этого?

С уважением

Ответы [ 3 ]

0 голосов
/ 24 сентября 2018

Если вам нужно знать, сколько записей в вашей таблице (в вашем случае она кажется фиксированной до 100, но, возможно, она может расти), вы все равно можете делать то, что хотите:

Например, произнесите вашу таблицу наYOURPAGE зависит от источника данных с именем Customers.

  1. Создайте новый элемент данных с именем CustomerCount, содержащий только одно поле с именем Count (целое число).

  2. Его источником данных будет сценарий SQL-запроса:

Select count(CustomerName) as Count from Customers

на странице, на которой у вас есть таблица, добавьте пользовательское свойство (скажем, с именем Count типа integer)

В событии присоединения страницы установитесвойство асинхронно с этим настраиваемым действием:

app.datasources.CustomerCount.load(function() { app.pages.YOURPAGE.properties.Count = app.datasources.CustomerCount.count; app.datasources.Customers.query.pageIndex = @properties.Count / 25; app.datasources.Customers.datasource.load(); });

В прошлом я успешно пробовал подобные вещи.

0 голосов
/ 25 сентября 2018

Нашел решение для этого:

ServerScript:

function CandidateCountRows() {
  var query = app.models.candidate.newQuery();
  var records = query.run();
  console.log("Number of records: " + records.length);
  return records.length;
}

в коде кнопки:

var psize = widget.datasource.query.pageSize;
var pidx = widget.datasource.query.pageIndex;
var posicao = psize * pidx;
var nreg = posicao;

google.script.run.withSuccessHandler(function(Xresult) {
    nreg = Xresult;  
    console.log('position: ' + posicao);
    console.log('nreg: ' + nreg);
    console.log('psize: ' + psize);
    console.log('pidx: ' + pidx);

    var i;
    for (i = pidx; i < (nreg/psize); i++) {    
      widget.datasource.nextPage();
    }
    widget.datasource.selectIndex(1);
}).CandidateCountRows();

Это позволит перейти к последней странице.

0 голосов
/ 24 сентября 2018

Если вы точно знаете, что ваш запрос всегда возвращает 100 записей и что размер вашей страницы всегда будет 25 записей, тогда самый простой подход - убедиться, что ваша кнопка привязана к тому же источнику данных, и присоединить следующее событие onClick:

widget.datasource.query.pageIndex = 4;
widget.datasource.load();
...