0

此代码应该更改标签可见性状态......但它喜欢保持隐藏状态。您可以看到我尝试以两种不同的方式定义rlabel 。使用注释的代码时出现未定义的错误 //。我知道它正在执行 else 语句。谢谢你的时间...

function showDialog()  {
var app = UiApp.createApplication();    
var panel = app.createHorizontalPanel();
panel.add(label3);

...
var label3 = app.createLabel("Bad PIN");
label3.setId('BADPIN').setVisible(false);
app.add(panel);
var doc = SpreadsheetApp.getActive();
doc.show(app);
...
    }

好的,所以对话框参数被传递给这个函数:

function respondtoSubmit(e) {
  var app = UiApp.getActiveApplication();
  ...
  if (loftExists(PINValue)==true) {
     ...
     return app.close(); }
  else {  //show bad pin label 
     var rlabel =app.getElementById('BADPIN');
     rlabel.setVisible(true);        
     Logger.log ("rlabel.setVisible(true); just called");
     }
}
4

3 回答 3

1

您在代码中执行此操作的方式label3.setId('BADPIN');以及稍后在 serverhander 中访问它var rlabel =app.getElementById('BADPIN');的方式是正确的方式。另一种方式,通过它e.parameter,只能用于访问小部件值,而不是操作小部件本身,并且仅适用于具有 setName-Method 的那些元素,标签不是这种情况(参见文档添加回调元素)。

所以你没有显示的代码部分应该在 showDialog() 中:

  app.add(label3);

而且,为了确认处理程序中的 else-part 被执行,添加一个 Logger 输出:

else {  //show bad pin label 
  var rlabel =app.getElementById('BADPIN');
  rlabel.setVisible(true); 
  Logger.log ("rlabel.setVisible(true); just called");
}

检查它,如果它仍然不起作用,请发布您的整个代码,那么某个地方肯定有另一个错误。

于 2013-02-12T10:23:29.647 回答
0

假设respondtoSubmit(e)从您的 UI 中的某个 Handler 调用,您必须return app;在函数结束时调用。这就是 GAS 知道将视图更新给用户的方式。

于 2013-02-11T23:24:01.457 回答
-1

您需要做app.createLabel('Bad Pin').setName('BADPIN')才能访问表单提交上的标签。设置 ID 是不够的。

于 2013-02-12T00:06:00.123 回答