Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gwt GXT 3.x带ButtonCell的行扩展器_Gwt_Gxt - Fatal编程技术网

Gwt GXT 3.x带ButtonCell的行扩展器

Gwt GXT 3.x带ButtonCell的行扩展器,gwt,gxt,Gwt,Gxt,我尝试将按钮添加到rowExpander内容中: 因此,我: ButtonCell<Integer> viewButtonCell = new ButtonCell<Integer>(); ButtonCell-viewButtonCell=new-ButtonCell(); 和行扩展器 RowExpander<XX> expander = new RowExpander<XX>(identity, new AbstractCell<XX

我尝试将按钮添加到rowExpander内容中: 因此,我:

ButtonCell<Integer> viewButtonCell = new ButtonCell<Integer>();
ButtonCell-viewButtonCell=new-ButtonCell();
和行扩展器

RowExpander<XX> expander = new RowExpander<XX>(identity, new AbstractCell<XX>() {
        @Override
        public void render(Context context, XX value, SafeHtmlBuilder sb) {
            sb.appendHtmlConstant("<span>");
            viewButtonCell.render(context, value.getId(), sb);
            sb.appendHtmlConstant("</span>");
        }
RowExpander=新的RowExpander(标识,新的AbstractCell(){
@凌驾
公共void呈现(上下文上下文、XX值、SafeHtmlBuilder sb){
某人以““””号结尾;
render(上下文,value.getId(),sb);
某人以““””号结尾;
}
ButtonCell呈现为OK,我可以看到它,但无法单击它,ButtonCell中没有selecthandler调用:(。 有没有办法让这个按钮的SelectHandlerative生效


谢谢

我创建了一些新的RowExpander:

public class MTPRowExpander<M> extends RowExpander<M> {

    public static int id = 0;

    public static interface WidgetFactory<M> {
        public Widget createWidget(M model);
    }

    private WidgetFactory<M> wf;
    private Set<Integer> expandedRows;

    public MTPRowExpander(IdentityValueProvider<M> valueProvider,WidgetFactory<M> wf) {
        this(valueProvider,GWT.<RowExpanderAppearance<M>> create(RowExpanderAppearance.class),wf);
    }

    public MTPRowExpander(IdentityValueProvider<M> valueProvider,final RowExpanderAppearance<M> appearance, WidgetFactory<M> wf) {
        super(valueProvider, null, appearance);
        this.wf = wf;
        expandedRows = new HashSet<Integer>();
    }

    @Override
    protected boolean beforeExpand(M model, Element body, XElement row,int rowIndex) {
        if (expandedRows.contains(rowIndex)) {
            return true;
        } else {
            expandedRows.add(rowIndex);
            return super.beforeExpand(model, body, row, rowIndex);
        }
    }

    @Override
    protected String getBodyContent(final M model, int rowIndex) {
        final int curentid = id++;
        Scheduler.get().scheduleFinally(new ScheduledCommand() {
            @Override
            public void execute() {
                Widget widget = wf.createWidget(model);
                com.google.gwt.dom.client.Element item = grid.getElement().childElement(".widget" + curentid);
                item.appendChild(widget.getElement());
                ComponentHelper.setParent(grid, widget);
            }
        });
        return "<div class='widget" + curentid + "'></div>";
    }

}
公共类MTPRowExpander扩展了RowExpander{
公共静态int id=0;
公共静态接口WidgetFactory{
公共Widget-createWidget(M模型);
}
私营威吉特工厂;
私有集扩展路径;
公共MTPRowExpander(标识值提供程序值提供程序,WidgetFactory wf){
这个(valueProvider,GWT.create(RowExpanderAppearance.class),wf);
}
公共MTPRowExpander(标识值提供程序值提供程序,最终行扩展程序外观,WidgetFactory wf){
super(valueProvider,null,外观);
this.wf=wf;
expandedRows=新的HashSet();
}
@凌驾
扩展前受保护的布尔值(M模型、元素体、XElement行、int行索引){
if(expandedRows.contains(rowIndex)){
返回true;
}否则{
expandedRows.add(行索引);
返回super.beforeExpand(model、body、row、rowIndex);
}
}
@凌驾
受保护的字符串getBodyContent(最终M模型,整数行索引){
最终int curentid=id++;
Scheduler.get().scheduleFinally(新的ScheduledCommand()命令){
@凌驾
public void execute(){
Widget Widget=wf.createWidget(模型);
com.google.gwt.dom.client.Element item=grid.getElement().childElement(“.widget”+curentid);
appendChild(widget.getElement());
setParent(网格、小部件);
}
});
返回“”;
}
}
我知道这个解决方案并不完美,但我不知道如何以更恰当的方式解决问题