2013-11-23 36 views
1

我已經問過similar question,但我真的無法弄清楚如何將這些元素連接在一起。我仍然不是很好Handlers,我想我的問題是:在Google Apps腳本中連接UI元素(TabPanel - UiApp)

如何在doGet()函數之外訪問UI小部件(及其子項)?

我的用例是這樣的:我有一個項目/ ID的列表。我擁有所有基於ID的數據,這些數據將填充此應用程序的項目詳細信息選項卡。我爲這些項目中的每一個創建了'獨特'Button,並將它們投入Grid。現在,如果/當它被點擊時,我想專門爲每個Button生成項目細節detailPanelWidget

我有項目ID通過Hidden連接到每個Button(唯一),但我似乎無法給項目詳情選項卡(detailPanel)連接到Button如此,點擊後,我可以設置值爲TextBox,DateBox,ListBoxWidget s的detailPanel

我想我對這件事很失落。我想要避免附加detailPanel的每個孩子Widget作爲ButtoncallbackElement不惜代價。有大約40個元素(我失去了計數),而且看起來效率很低。我幾乎可以肯定,如果我可以添加一個Widget作爲回調元素,那麼我可以訪問所有子女Widget s。但我試過了,似乎並非如此。

這是鏈接到公衆UiApp,它顯示了用戶界面。和姐姐Script Project (uneditable)

回答

2

您不需要添加要寫入的回調元素,回調元素僅用於讀取其數據。如果detailspanel id是動態的,則隱藏它的id,並將其傳遞給處理程序。從你的處理程序getelementbyid並設置其數據。

+0

所以我的''''detailPanel'已經嵌入了元素:4'VerticalPanel's都包含'Grid'。我有'detailsPanel'('VeriticalPanel')存儲在'fillDetails'函數的一個變量中。但是,我不確定如何訪問該面板的子部件(4個嵌入式面板,網格等)。 'detailPanel' ID不是動態的,它是靜態的('「detailPanel」')。由於我似乎沒有直接訪問子項,我是否需要*在fillDetails函數中通過ID獲取所有Widget才能訪問它們? –

+0

是的,你應該這樣做......但是你應該給他們一些你可以很容易地(重新)在循環中構建的ID:像ele0,ele1,ele2 ......這樣在循環中你可以「ele」+ n來獲得它...爲小部件名稱做同樣的事情,使用e.parameter [「ele」+ n]也很容易檢索這些值。 –

+0

啊,這就是我的想法。我希望有像'detailPanel.VerticalPanel.Grid.DateBox'這樣的元素鏈,但是現在我覺得這太奇怪了。我想知道 - 這是一個將來可能需要由另一個人維​​護的項目。將Widgets命名爲「widgetXX」'是否是個好主意?當然,通過使用循環代替40行代碼來唯一標識它們,它們更容易管理,但這也很難閱讀/理解它們在做什麼。 –

相關問題