Google app maker 基于下拉列表中的当前年份值更新表(外部数据)

Google app maker 基于下拉列表中的当前年份值更新表(外部数据),google-app-maker,Google App Maker,我有一个表格显示员工的休假请求。现在,我正在用“onAttach”事件显示该表中所有年份的请求。我想实现一个下拉列表,绑定到外部sql数据中的“年”列。因此,每当我从下拉列表中选择一年时,我都希望表只更新,显示表中特定年份的请求。我如何实现它 表的onAttach函数loadHolidayTable()导致此客户机函数 function loadHolidayTable() { app.datasources.HolidayModel.load({ failure: function

我有一个表格显示员工的休假请求。现在,我正在用“onAttach”事件显示该表中所有年份的请求。我想实现一个下拉列表,绑定到外部sql数据中的“年”列。因此,每当我从下拉列表中选择一年时,我都希望表只更新,显示表中特定年份的请求。我如何实现它

表的onAttach函数
loadHolidayTable()
导致此客户机函数

function loadHolidayTable() {
  app.datasources.HolidayModel.load({
    failure: function (error) {
      displayTimedSnackbar('Unable to load holidays table: ' + error);
    }
  });
}
数据源“HolidayModel”中的我的服务器脚本

导致此服务器功能:

function calculateHolidayModel(query) {
  var queryStr = '';
  var currentYear = null; --> to be replaced by dropdown value

  if (currentYear === null || currentYear == 'undefined') {
    queryStr = 'SELECT * FROM Holidays WHERE employeeID = ' + "'" + empID + "'";
  }
  else {
    queryStr = 'SELECT * FROM Holidays WHERE employeeID = ' + "'" + empID + "'" + ' AND year = ' + "'" + currentYear + "'";
  }

  console.log(queryStr);

  //var dayRecords = [];
  var holidayRecords = [];
  var connection = getJDBCConnection_();
  var statement = connection.prepareStatement(queryStr);

  try {
    var results = statement.executeQuery();

    while(results.next()) {
      var holidayRecord = app.models.HolidayModel.newRecord();
      holidayRecord.ID = results.getInt(2);
      holidayRecord.From = new Date(results.getString(3));
      holidayRecord.To = new Date(results.getString(4));
      holidayRecord.Status = results.getString(5);
      holidayRecords.push(holidayRecord);
      console.log(results.getInt(2));
    }
    results.close();
    statement.close();
  } catch (err) {
    console.log(err);
  }

  return holidayRecords;
}
currentYear
应替换为下拉列表中的值


欢迎提出任何建议

您能告诉我们您当前的代码是否正常工作或出现任何错误吗?@MarkusMalessa当前代码正常工作并列出所有假日请求,我在下拉菜单中实现年份过滤器时遇到问题将currentYear作为数字类型参数添加到您的计算数据源中。将下拉列表绑定到
@datasource.query.parameters.currentYear
。替换
var currentYear=null带有
var currentYear=query.parameters.currentYear
。应该这样做。如果不起作用,请告诉我。同时将“undefined”替换为just undefined,undefined不是字符串类型。@MarkusMalessa由于某些原因,我无法将下拉列表绑定到
@datasources.HolidayModel.query.parameters.currentYear
,尽管它在“选择绑定”中可用。由于某些原因,它变灰了。您的期权是如何生成的,像[201620172018]还是以其他方式生成的?如果在值之前设置选项,那么值绑定可能会依赖于设置选项的方式,例如类型不匹配。
function calculateHolidayModel(query) {
  var queryStr = '';
  var currentYear = null; --> to be replaced by dropdown value

  if (currentYear === null || currentYear == 'undefined') {
    queryStr = 'SELECT * FROM Holidays WHERE employeeID = ' + "'" + empID + "'";
  }
  else {
    queryStr = 'SELECT * FROM Holidays WHERE employeeID = ' + "'" + empID + "'" + ' AND year = ' + "'" + currentYear + "'";
  }

  console.log(queryStr);

  //var dayRecords = [];
  var holidayRecords = [];
  var connection = getJDBCConnection_();
  var statement = connection.prepareStatement(queryStr);

  try {
    var results = statement.executeQuery();

    while(results.next()) {
      var holidayRecord = app.models.HolidayModel.newRecord();
      holidayRecord.ID = results.getInt(2);
      holidayRecord.From = new Date(results.getString(3));
      holidayRecord.To = new Date(results.getString(4));
      holidayRecord.Status = results.getString(5);
      holidayRecords.push(holidayRecord);
      console.log(results.getInt(2));
    }
    results.close();
    statement.close();
  } catch (err) {
    console.log(err);
  }

  return holidayRecords;
}