将小部件放在GXT中的RowExpander中

时间:2013-09-05 11:59:17

标签: java gwt gxt

有没有办法在展开的区域中显示小部件? RowExpander使用AbstractCell,它只能显示简单的html。可以从小部件中获取html并将其放入单元格中,但小部件中的按钮在此之后将无效。

3 个答案:

答案 0 :(得分:1)

扩展RowExpander类和/或覆盖beforeExpand之前的方法。这就是我所做的,它非常适合插入按钮,或者在我的情况下我需要一个网格:

public class RowWidgetExpander extends RowExpander {

private Widget widget;

public void setWidget(Widget widget) {
    this.widget = widget;
}

public Widget getWidget() {
    return widget;
}

@Override
protected boolean beforeExpand(ModelData model, Element body, El row, int rowIndex) {
    RowExpanderEvent e = new RowExpanderEvent(this);
    e.setModel(model);
    e.setRowIndex(rowIndex);
    e.setBodyElement(body);

    if(fireEvent(Events.BeforeExpand, e)) {
        body.setInnerText("");
        body.appendChild(widget.getElement());
        ComponentHelper.doAttach(widget);

        return true;
    }

    return false;
}

答案 1 :(得分:0)

而不是将小部件插入网格。您可以将小部件放在网格上。

在AbsolutPanel中插入网格。在展开事件之后,您可以将小部件插入到AbslolutPanel中并在展开区域上设置位置。

设置AbsolutPanel的高度,例如网格的总高度(所有网格线)。并且AbsolutPanel放入滚动面板。

使用此解决方案,您有一个小部件 - 不仅仅是纯HTML。而且您不必担心滚动。

答案 2 :(得分:0)

尝试此解决方法以在行扩展器中重新启动事件。  http://www.sencha.com/forum/showthread.php?250316-RowExpander-dosn-t-fire-events-on-ContentCell