试图理解页面窗口小部件中的排序

时间:2017-10-17 19:58:31

标签: google-app-maker

我试图了解表格小部件在加载页面时的排序是如何工作的。对于使用Table小部件的大多数页面,页面加载按第一列排序。

我确实在页面中的Table面板的onAttach事件中看到了以下代码。我想知道这是否是在页面加载时设置排序的代码。

// GENERATED CODE: modify at your own risk
window._am = window._am || {};
if (!window._am.TableState) {
  window._am.TableState = {};
  window._am.inFlight = false;
}
if (!window._am.sortTableBy) {
  window._am.sortTableBy = function(datasource, field, fieldHeader, tableState) {
    if (!field) {
      throw "Can't sort the table because specified field was not found.";
    }
    tableState.inFlight = true;
    if (tableState.sortByField === field.name) {
      tableState.ascending = !tableState.ascending;
    } else {
      if (tableState.fieldHeader) {
        tableState.fieldHeader.text = tableState.fieldHeaderText;
        tableState.fieldHeader.ariaLabel = "";
      }
      tableState.sortByField = field.name;
      tableState.ascending = true;
      tableState.fieldHeader = fieldHeader;
      tableState.fieldHeaderText = fieldHeader.text;
    }
    datasource.query.clearSorting();
    var sortDirection = tableState.ascending ? "ascending" : "descending";
    datasource.query.sorting[field.name]["_" + sortDirection]();
    datasource.query.pageIndex = 1;
    datasource.load(function() {
      tableState.inFlight = false;
      fieldHeader.text = fieldHeader.text.replace(/ (\u25B2|\u25BC)/g, "");
      if (tableState.sortByField === field.name) {
        fieldHeader.ariaLabel = fieldHeader.text + " sort " + sortDirection;
        fieldHeader.text = fieldHeader.text + (tableState.ascending ? " \u25B2" : " \u25BC");
        app.accessibility.announce(fieldHeader.ariaLabel);
      }
    });
  };
}

2 个答案:

答案 0 :(得分:2)

在数据源上设置排序。

单击表正在使用的模型(左上角)。

单击“数据源”并展开“数据源”(只有一个,除非您已创建其他数据源)。

选择要用于排序的字段后,您可以选择" Ascending"或" Descending"。

enter image description here

答案 1 :(得分:0)

问题在于从单独的创建表单添加新记录。新记录始终显示在列表的末尾,直到后续加载'执行。