Google App Maker Table не может выбрать строку - PullRequest
0 голосов
/ 27 августа 2018

Я сделал приложение с двумя таблицами для источников данных A и B.

B - это отношение к A (через общее поле Id).

Итак, я хочу отобразить таблицу A, а под ней - таблицу B.

В идеале, просто нажав на строку в A, следует

а) выберите эту строку, а затем b) обновить таблицу B, чтобы показать связанные элементы в источнике данных B.

Мне не удалось сделать это автоматически с помощью appmaker, но я мог бы добавить код для загрузки на таблицу A, например:

app.datasources.A.query.filters.B.Id._equals = widget.datasource.item.Id;
app.datasources.B.load();

и к событию onClick в самой таблице я также добавил:

app.datasources.A.selectIndex(widget.parent.childIndex);
app.datasources.B.query.filters.B.Id._equals = widget.datasource.item.Id;
app.datasources.CurrentValuation.load();

Это в основном работает, за исключением того факта, что TableA фактически не выберет строку, по которой я щелкнул в пользовательском интерфейсе (выбранная строка всегда является второй). Источник данных выбирает правильный элемент для tableB, но пользовательский интерфейс показывает неправильную строку, выбранную в TableA.

Я подозреваю, что мне нужно либо вызвать другой метод, либо, может быть, есть более лучший подход, и я тупица. В любом случае, спасибо за любые ответы!

1 Ответ

0 голосов
/ 27 августа 2018

В идеале источник данных TableA должен быть 'A', а таблица B должна быть 'A: B (отношение)'. Вы также хотели бы предварительно выбрать B из своего источника данных A. Если вы установите отношение к источнику данных таблицы, вы не сможете, однако, сортировать заголовки или разбивать их на страницы.

В качестве альтернативы, если вы хотите фильтровать TableB на основе элемента TableA, тогда я бы установил ваш фильтр в событии источника данных A onItemChange, например:

var item = datasource.item;

if (item !== null) {
  var ds = app.datasources.B;
  ds.query.filters.A._equals = item;
  ds.load();
}

Если вы хотите придерживаться того, что у вас есть, то удалите код onLoad из TableA и измените код для события onClick строки таблицы на:

app.datasources.B.query.filters.A._equals = widget.datasource.item;
app.datasources.B.load();

Это должно исправить вашу текущую проблему, и вы всегда можете изучить другие варианты.

...