更新单元格列中的选定项目

时间:2014-09-05 09:32:46

标签: java gwt

我想在每次从树中选择一个项目时查看可更改的单元格属性,并刷新单元格,因此它将显示所选的数据。我有这段代码:

void updateSList(int dID) {
    m.setWidth("100%");
    m.setAutoHeaderRefreshDisabled(true);
    final ListDataProvider<M> list=new ListDataProvider<M> ();
    SimplePager.Resources pager=GWT.create(SimplePager.Resources.class);
    simplePager=new SimplePager(TextLocation.CENTER, pager, false,0,true);


    final List<M> me=list.getList();
    final ListHandler<M> sort=new ListHandler<M>(me);
    m.addColumnSortHandler(sort);
    Column<Metric,String> thirdColumn=new Column<M,String>(new TextCell()) {

        @Override
        public String getValue(M object) {
            // TODO Auto-generated method stub
            return object.getName();
        }

    };
    Column<M,String> forthColumn=new Column<M,String>(new TextCell()) {

        @Override
        public String getValue(M object) {
            // TODO Auto-generated method stub
            return object.getLast();
        }

    };

    m.addColumn(thirdColumn,"Name");
    thirdColumn.setSortable(true);
    sort.setComparator(thirdColumn,new Comparator<M>() {

        @Override
        public int compare(M m1, M m2) {
            // TODO Auto-generated method stub
            return m1.getName().compareTo(m2.getName());
        }});

    m.addColumn(forthColumn,"Last");
    forthColumn.setSortable(true);
    sort.setComparator(forthColumn,new Comparator<M>() {

        @Override
        public int compare(M m1, Mm2) {
            // TODO Auto-generated method stub
            return m1.getLast().compareTo(m2.getLast());
        }});


    AsyncCallback<List<M>> callback = new AsyncCallback<List<M>>() {

        @Override
        public void onFailure(Throwable caught) {
            // TODO Auto-generated method stub
        }

        @Override
        public void onSuccess(final List<M> result) {

        list.addDataDisplay(m);

        for (final M mt : result) {

                me.add(mt);

            }
        m.setVisibleRangeAndClearData(new Range(0,10), true);
        simplePager.setDisplay(m);
        }

    };

    rpcService.getData(dID, callback);

bevor选择第二项:

  

col1 | col2 | COL3

选择第二项后:

  

col1 | col2 | col3 | col1 | col2 | COL3

如果我从树中选择一个项目,我可以看到这个项目的属性,但如果我选择下一个项目我得到的列显示重复两次与该项目的属性,但我想得到这个视图,如通常所示,而不是增加列。有人可以建议我在哪里做错了吗?

1 个答案:

答案 0 :(得分:1)

每次调用updateSList时,您都会创建并添加新列。在此方法中只需要一行代码:

rpcService.getData(dID, callback);

应该将所有其他代码移动到另一个方法,在第一次初始化此视图时调用一次。