Я согласен с DTing.
Запрос серверной части для каждой ячейки / строки не очень эффективен.Я бы предпочел поместить информацию ( jobExpired ) в ваш класс EmployerJobs
и передать информацию, когда вы запросите список ваших EmployerJobs
для отображения в вашем CellTable
.
. Вы можете обновитьсписок периодически для учета изменений (см. образец расходы о том, как это сделать).
Но на ваш первоначальный вопрос (скрытие клетки).Существует два решения:
- Используйте ActionCell и переопределите метод рендеринга.
ActionCell:
ActionCell<EmployerJobs> reListCell = new ActionCell<EmployerJobs>("ReList",
new ActionCell.Delegate<EmployerJobs>() {
@Override
public void execute(EmployerJobs object) {
// code to be executed
}
})
{
@Override
public void render(Cell.Context context,EmployerJobs value,SafeHtmlBuilder sb) {
if (value.isJobExpired()) // isJobExpired returns the field jobExpired.
super.render(context,value,sb);
}
};
reListColumn = new Column<EmployerJobs, EmployerJobs>(reListCell) {
@Override
public String getValue(EmployerJobs object) {
return object;
}
};
ctJobs.addColumn(reListColumn,
EmployerDashBoardConstants.EMPTYHEADERCOLUMN);
- Используйте ButtonCell и переопределите метод рендеринга вашего столбца.
ButtonCell:
ButtonCell reListCell = new ButtonCell();
reListColumn = new Column<EmployerJobs, String>(reListCell) {
@Override
public String getValue(EmployerJobs object) {
return "ReList";
}
@Override
public void render(Cell.Context context,EmployerJobs object,SafeHtmlBuilder sb) {
if (value.isJobExpired()) // isJobExpired returns the field jobExpired.
super.render(context,value,sb);
}
};
ctJobs.addColumn(reListColumn,
EmployerDashBoardConstants.EMPTYHEADERCOLUMN);