0

需要一点帮助来确定如何根据前一个列表框填充 3 个列表框。到目前为止,我拥有的是从电子表格填充的 1 个列表框。有人可以帮助我进行设置,以便第二个列表框将根据第一个列表框填充,第三个列表框将根据第一个列表框填充吗?这是代码:

function doGet(e){
  var app = UiApp.createApplication();
  var mainPage = app.createVerticalPanel().setId('mainPage');
  var dataItemsLB = app.createListBox().setId('dataItemsLB').setName('dataItemsLB'); 
  var dataItemsLbl = app.createLabel('Data Items'); 
  dataItems(dataItemsLB);
  mainPage.add(dataItemsLB);
  app.add(mainPage);
  return app;
  }


  function dataItems(listbox){
  var app = UiApp.getActiveApplication();
  var ss = SpreadsheetApp.openById('0AhraBJOts4V3dDhYbERTR0hFNUtNdEhZd2c4OElpY0E');
  var list = ss.getSheetByName('dataItems');
  var values = list.getRange(1,1,ss.getLastRow(),1).getValues();
  for (var i in values){
  listbox.addItem(values[i][0].toString());
  }
  return app;
  }

上面的代码仅适用于 1 个列表框,但我认为它会帮助我从底部开始,所以我理解任何解释。感谢您的任何建议!

4

1 回答 1

1

回复社区试试这个代码:

function doGet(e){
  var app = UiApp.createApplication();
  var mainPage = app.createVerticalPanel().setId('mainPage');
  var dataItemsLB = app.createListBox().setId('dataItemsLB').setName('dataItemsLB'); // create a basic list box
  var dataItemsLB2 = app.createListBox().setId('dataItemsLB2').setName('dataItemsLB2'); // create a basic list box
  var dataItemsLB3 = app.createListBox().setId('dataItemsLB3').setName('dataItemsLB3'); // create a basic list box
  var dataItemsLbl = app.createLabel('Data Items'); 
  dataItems(dataItemsLB); // call the "dataItems" function to populate the list box


  // Create Server Handlers
  var sHandlerLB = app.createServerHandler("listLBSelect");
  sHandlerLB.addCallbackElement(mainPage);
  dataItemsLB.addChangeHandler(sHandlerLB);
  dataItemsLB2.addChangeHandler(sHandlerLB);  

  mainPage.add(dataItemsLB);
  mainPage.add(dataItemsLB2);
  mainPage.add(dataItemsLB3);
  app.add(mainPage);

  return app;
}


function dataItems(listbox){
  var app = UiApp.getActiveApplication();
  var ss = SpreadsheetApp.openById('0AhraBJOts4V3dDhYbERTR0hFNUtNdEhZd2c4OElpY0E');
  var list = ss.getSheetByName('dataItems');
  var values = list.getRange(1,1,ss.getLastRow(),1).getValues();
  for (var i in values){
    listbox.addItem(values[i][0].toString());
  }
  return app;
}

function listLBSelect(e) {
  var app = UiApp.getActiveApplication();
  Logger.log(e);
  Logger.log("Listbox changed: " + e.parameter.source);
  // check which listbox has been changed:
  switch(e.parameter.source) {
    case "dataItemsLB":
      var dataItemsLB2 = app.getElementById("dataItemsLB2");
      dataItemsLB2.addItem("aaaaaa"); 
      dataItemsLB2.addItem("bbbbbb"); 
      dataItemsLB2.addItem("cccccc"); 
      break;
    case "dataItemsLB2":
      var dataItemsLB3 = app.getElementById("dataItemsLB3");
      dataItemsLB3.addItem("hhhhhh"); 
      dataItemsLB3.addItem("jjjjjj"); 
      dataItemsLB3.addItem("kkkkkk"); 
      break;     
  }
  return app;
}
于 2012-12-28T15:24:02.030 回答