我使用的是Ext-GWT,我認爲ListView
是我需要的正確佈局。我的問題是我必須爲我的所有項目使用HTML模板,但是我想構建GWT/Ext-GWT小部件,所以我使用div
佔位符,我將用適當的小部件替換。如何在小部件已經包含在其他小部件中時使用小部件替換小部件?
我怎樣才能用小部件代替我的div
?我的第一個嘗試是使用RootPanel.get('div-id')
,但顯然你不能創建一個小部件中的RootPanel
(我用調試模式來遍歷代碼,直到我發現無聲的異常)。
public class TicketContainer extends LayoutContainer {
private ArrayList<BasicTicket> tickets;
public TicketContainer(ArrayList<BasicTicket> tickets) {
this.tickets = tickets;
}
@Override
protected void onRender(Element parent, int index) {
super.onRender(parent, index);
setLayout(new FlowLayout(1));
ListStore<BasicTicket> store = new ListStore<BasicTicket>();
store.add(this.tickets);
ListView<BasicTicket> view = new ListView<BasicTicket>(store);
view.addListener(Events.Refresh, new Listener<BaseEvent>() {
@Override
public void handleEvent(BaseEvent be) {
for (BasicTicket ticket : tickets) {
// At this point I need to find the div with the id
// "ticket_"+ticket.getId() and replace it with a GWT
// widget that I can add events to and enable drag and drop
}
}
});
add(view);
}
private native String getTemplate() /*-{
return ['<tpl for=".">',
'<div id="ticket_{id}"></div>',
'</tpl>'].join("");
}-*/;
}
如果您在代碼中需要額外的上下文,完整源代碼位於https://code.launchpad.net/~asa-ayers/+junk/Kanban。
在我的情況下,我不能使用純GWT對象,因爲我無法在任何東西上調用add()。我必須傳遞一個模板,Ext-GWT填充變量並將我的html放到頁面上。我正在尋找一種方法,將它放在頁面上並將HTMLPanel放入其中,或將面板包裹在其中。 – 2009-10-04 05:49:33
我的不好 - 我認爲GXT更像GWT。那麼LayoutContainer.getItemByItemId怎麼樣?在該id處獲取組件後,可以使用indexOf並插入來替換該組件。我無法真正測試這個atm,但它似乎是你正在尋找的東西。 – 2009-10-04 12:38:18