开发者

Creating custom ActionCell in CellTable Column

I want one of my table columns to have a deleteButton.

ActionCell<Entrata> deleteCell = new ActionCell<Entrata>("x",new Delegate<Entrata>() {
            @Override
            public void execute(Entrata object) {
                // rpc stuff.... 
            }
        });

Ok but this line generates an error:

Column<Entrata,Entrata> deleteColumn = new Column<Entrata, Entrata>(deleteCell);

"Cannot instantia开发者_如何学运维te the type Column"

What do you think?


Here you go with working code:

Assumptions:

TYPE - Is the class of the data you show in rows of Cell Table it the same because I assume you want reference to the instance of data when you going to delete it

public class DeleteColumn extends Column<TYPE, TYPE>
{
    public DeleteColumn()
    {

        super(new ActionCell<TYPE>("Delete", new ActionCell.Delegate<TYPE>() {
            @Override
            public void execute(TYPE record)
            {
                /**
                  *Here you go. You got a reference to an object in a row that delete was clicked. Put your "delete" code here
                  */
            }
        }));
    }

    @Override
    public TYPE getValue(TYPE object)
    {
        return object;
    }
};


From the doku:

A representation of a column in a table. The column may maintain view data for each cell on demand. New view data, if needed, is created by the cell's onBrowserEvent method, stored in the Column, and passed to future calls to Cell's

So you have to declar it something like this:

    Column<String, String> colum = new Column<String, String>(null) {

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

Still I don't exactly know how you implement the delete button, so it would be nice if you can give us the rest of your code.


This works

//table = initialized CellTable with content already loaded 

ActionCell editCell = new ActionCell<EmployeeObject>("remove", new ActionCell.Delegate<EmployeeObject>() {
            public void execute(EmployeeObject object){
                List<EmployeeObject> list = new ArrayList<EmployeeObject>(table.getVisibleItems());
                for(int i = 0; i < list.size(); i ++){
                    if(object.getFirstname().equals(list.get(i).getFirstname())){
                        list.remove(i);
                        break;
                    }
                }
                table.setRowData(list);
            }
        });

Column<EmployeeObject, ActionCell> editColumn = (new IdentityColumn(editCell));
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜