저는 Ext-GWT를 사용하고 있습니다. 제가 생각한 바로는 ListView
이 올바른 레이아웃이라고 생각합니다. 내 문제는 모든 항목에 대해 HTML 템플릿을 사용해야한다는 것입니다. 대신 GWT/Ext-GWT 위젯을 작성하므로 적절한 위젯으로 대체 할 자리 표시자를 div
으로 사용하고 있습니다.다른 위젯에 div가 이미 포함되어있는 경우 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이다.
제 경우에는 add()를 호출 할 수 없어서 순수한 GWT 객체를 사용할 수 없습니다. 템플릿을 전달해야하고 Ext-GWT가 변수를 채우고 내 html을 페이지에 놓습니다. 페이지에 HTML을 가져 와서 HTMLPanel을 안에 넣거나 주위에 패널을 래핑하는 방법을 찾고 있습니다. –
그렇다면 GXT가 GWT와 더 유사하다고 생각했습니다. 그럼 LayoutContainer.getItemByItemId는 어떻습니까? 해당 id에서 Component를 가져온 후에는 indexOf를 사용하여 삽입하여 Component를 대체 할 수 있습니다. 나는이 atm을 실제로 시험 할 수는 없지만, 당신이 찾고있는 것 같다. –