2

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

4

3 回答 3

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;
}
于 2013-10-09T22:26:10.793 回答
0

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

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

设置 AbsolutPanel 的高度,例如网格的总高度(所有网格线)。AbsolutPanel 放在一个滚动面板中。

有了这个解决方案,你就有了一个小部件——不仅仅是纯 html。而且您不必担心滚动。

于 2013-09-05T21:05:10.173 回答
0

尝试此解决方法以使事件在行扩展器中再次起作用。 http://www.sencha.com/forum/showthread.php?250316-RowExpander-dosn-t-fire-events-on-ContentCell

于 2013-10-04T19:36:40.063 回答