Создание пользовательских ActionCell в столбце CellTable - PullRequest
4 голосов
/ 11 августа 2011

Я хочу, чтобы у одного из столбцов таблицы была кнопка deleteButton.

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

Хорошо, но эта строка выдает ошибку:

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

"Невозможно создать экземпляр столбца типа"

Что ты думаешь?

Ответы [ 3 ]

0 голосов
/ 12 августа 2011

Здесь вы работаете с рабочим кодом:

Допущения:

TYPE - Является ли класс данных, отображаемых в строках таблицы ячеек, одинаковым, потому что яПредположим, вы хотите сослаться на экземпляр данных, когда собираетесь удалить его

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;
    }
};
0 голосов
/ 21 июня 2012

Это работает

//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 голосов
/ 12 августа 2011

Из доку:

Представление столбца в таблице.Столбец может поддерживать данные просмотра для каждой ячейки по требованию.Новые данные представления, если необходимо, создаются методом onBrowserEvent ячейки, сохраняются в столбце и передаются в будущих вызовах ячейки

Так что вам нужно объявить это примерно так:1008 *

Тем не менее я точно не знаю, как вы реализуете кнопку удаления, поэтому было бы неплохо, если бы вы могли дать нам оставшуюся часть кода.

...