所有
我正在尝试实现一个包含多个子面板的StackPanel来收集用户数据。每个子面板(我将它们命名为SwapRecordPanels)代表Google电子表格中的一行,其中包含两个想要交换哪些日期的人的数据。 SwapRecordPanel包含一个删除按钮。单击删除按钮,我希望SwapRecordPanel从StackPanel中删除它自己。
但是,我发现当我尝试从StackPanel中删除元素时,更改不会在GUI中注册。为了证明我可以删除StackPanel中的元素,我添加了一个名为“Click Me”的额外按钮。正如您在下面的代码中看到的,它的处理程序试图从StackPanel“LeftPanel”中删除一个元素。但是,当我单击按钮时,“LeftPanel”保持不变。我想知道是否有某种刷新/重绘方法被调用来更新GUI。如果没有,有人可以提供任何建议吗?任何帮助将不胜感激。
function myViewer() {
var myapp = doGet();
SpreadsheetApp.getActive().show(myapp)
}
function doGet() {
var myapp = UiApp.createApplication();
var LeftPanel = myapp.createStackPanel().setId("LeftPanel");
var LeftScrollPanel = myapp.createScrollPanel(LeftPanel).setPixelSize(410,200)
myapp.add(LeftScrollPanel)
var SwapPane1 = SwapRecordPanel(LeftPanel);
var SwapPane2 = SwapRecordPanel(LeftPanel);
LeftPanel.add(SwapPane1,"Test 1 Header");
LeftPanel.add(SwapPane2, "Test 2 Header");
var myButton = myapp.createButton("Click Me").addClickHandler(myapp.createServerHandler("ButtonClicker"));
myapp.add(myButton);
return myapp;
}
function ButtonClicker()
{
Logger.log("I was clicked")
var myapp = UiApp.getActiveApplication();
var LeftPanel = myapp.getElementById("LeftPanel");
LeftPanel.remove(myapp.getElementById("panel1"));
}
答案 0 :(得分:0)
您必须从处理程序函数“返回”对应用程序的更改才能更新UI。
只需在return myapp;
功能的末尾添加ButtonClicker()
。