如何使用从网格绑定到HTML模板?

时间:2012-03-27 13:03:40

标签: binding grid gxt

可以使用GXT的绑定机制将Grid绑定到Html(或其他Widget实现吗?

来自the examples它似乎只适用于表单(FormBinding),而我的目的是让Template更新一个小部件内部元素,由网格{{1}驱动发送该模板的模型。

1 个答案:

答案 0 :(得分:0)

在当前版本的GXT中显然无法直接绑定网格和通用组件,无论如何这是一种替代解决方案,作为解决方法提供:

我刚刚使用示例Grid BindingTemplates来支持您的要求。这是修改后的代码

@Override
protected void onRender(Element parent, int index) {
    super.onRender(parent, index);
    setStyleAttribute("margin", "10px");

    ContentPanel cp = new ContentPanel();

    cp.setHeading("Form Bindings");
    cp.setFrame(true);
    cp.setSize(800, 400);
    cp.setLayout(new RowLayout(Orientation.HORIZONTAL));

    final LayoutContainer panel = new LayoutContainer(new FlowLayout());

    Grid<Stock> grid = createGrid();
    grid.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);

    final Template template = new Template(getTemplate());
    grid.getSelectionModel().addListener(Events.SelectionChange, new Listener<SelectionChangedEvent<Stock>>() {
        public void handleEvent(SelectionChangedEvent<Stock> be) {
            if (be.getSelection().size() > 0) {
                template.overwrite(panel.getElement(), Util.getJsObject(be.getSelectedItem()));
            } else {
                panel.removeAll();
            }
        }
    });
    cp.add(grid, new RowData(.6, 1));
    cp.add(panel, new RowData(.4, 1));

    add(cp);
}

private native String getTemplate() /*-{
    var html = [ '<p>Name: {name}</p>', '<p>Symbol: {symbol}</p>',
            '<p>Last: {last}</p>', '<p>Last Updated: {date}</p>', ];
    return html.join("");
}-*/;

将这些修改添加到Grid Binding示例中。希望这会有所帮助。

谢谢, 内甚