2013-05-14 69 views
0

我一直試圖讓我的了UiApp電網動態地添加基於一個按鈕插入按鈕的對象,但似乎無法這樣做。我不知道爲什麼這不起作用。任何幫助將不勝感激。不能動態更新UI電網類谷歌Apps腳本

function trackColumns() 
{ 
    var app = UiApp.createApplication().setWidth(500).setHeight(360).setTitle('Step 1: Select Information to Track'); 
    var panel = app.createVerticalPanel().setId("settingsPanel"); 
    var headerpanel = app.createVerticalPanel().setId("headerPanel").setStyleAttribute("background", "silver").setWidth(500); 
    var columnPanel = app.createVerticalPanel(); 
    var mainGrid = app.createGrid(5, 1).setId("mainGrid"); 
    var columnGrid =app.createGrid(1,1).setId("columnGrid"); 
    var columnspanel = app.createHorizontalPanel().setId("columnspanel"); 
    var columnname = app.createTextBox().setText("Name"); 
    columnspanel.add(columnname); 
    var addcolumnspanel = app.createHorizontalPanel().setId("addcolumnspanel"); 
    var addbuttonhandler = app.createServerHandler("addcolumn"); 
    addbuttonhandler.addCallbackElement(columnGrid); 
    var addbutton = app.createButton().setId("btnaddcolumn").setText("Add another column").addClickHandler(addbuttonhandler); 
    addcolumnspanel.add(addbutton); 
    columnGrid.setWidget(0, 0, columnspanel); 
    mainGrid.setWidget(1, 0, columnGrid); 
    mainGrid.setWidget(2, 0, addcolumnspanel); 
    panel.add(mainGrid); 
    app.add(panel); 
    ss.show(app); 
    return app; 
} 


function trackster_addcolumn(e) { 

    var app = UiApp.getActiveApplication(); 
    var columnspanel = app.createHorizontalPanel().setId("columnspanel"); 
    var columnname = app.createTextBox().setText("Name"); 
    var columntype = app.createListBox(); 
    columntype.addItem("Text"); 
    columntype.addItem("DropDown"); 
    columntype.addItem("Date"); 
    columntype.addItem("Number"); 
    columnspanel.add(columnname); 
    columnspanel.add(columntype); 
    var columngrid = e; 
    columngrid.setWidget(3,0,columnspanel); 
    return app; 
} 

回答

0

從我可以告訴...

那就需要,如果你想設置(3,0)有些事情後來在服務器函數來初始化該網格爲4行。

var columnGrid =app.createGrid(1,1).setId("columnGrid"); >>var columnGrid =app.createGrid(4,1).setId("columnGrid");

服務器功能的名稱只需要搭配什麼在createServerHandler()...

function trackster_addcolumn(e) >>function addcolumn(e)

e的經過的所有控件的值到服務器功能,而不是實際的小部件本身。爲了讓網格...

var columngrid = e; >>var columngrid = app.getElementById('columngrid');

+0

是在TRACKSTER問題是,只是因爲我打了一些/複製了一些。網格設置得更大。 VAR mainGrid = app.createGrid(5,1).setId( 「mainGrid」); – Kevrone 2013-05-14 03:10:01

+0

我一直收到的錯誤是 遇到錯誤:無法在對象[object Object]中找到函數setWidget。 – Kevrone 2013-05-14 03:13:27

+0

忘了添加的getElementById。現在,如果只有一種方法可以檢測網格中已有多少列! – Kevrone 2013-05-14 03:17:17