1

私は 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にあります。

4

2 に答える 2

2

「純粋な」GWTでは、答えは次のようになりますHTMLPanel

String id = DOM.createUniqueId();
HTMLPanel panel = new HTMLPanel("<div class=\"content\" id=\"" + id + "\"></div>");

panel.add(new Label("Something cool"), id);

ご覧のとおり、com.google.gwt.user.client.ui.HTMLPanel.add(Widget, String)は要素のIDをとって、その要素HTMLPanelWidget内部に配置します。

私はExt-GWTを使用していませんが、Ext-GWTで同等のものを使用HTMLPanelまたは検索できます。

于 2009-10-03T20:26:03.043 に答える
0

HTML パネルで既存の div をラップすることもできます。

HTMLPanel newPanel = HTMLPanel.wrap(Document.get().getElementById("yourDivId"));
newPanel.add(your_widget);
于 2012-07-04T01:57:35.083 に答える