воскресенье, 13 октября 2013 г.

Динамическое отображение колонок в таблице


Задача: изменять видимость колонок таблицы в в коде программы, в зависимости от некоторых условий.


  • создаем HashMap отвечающий за отображение колонок в бине InOperationsB (область ViewScope). Инициализируем  его в конструкторе, либо в момент первого использования


    private HashMap viewColumns;

    public InOperationsB() {
        super();
        
        if(viewColumns == null) {
            viewColumns = new HashMap();
            viewColumns.put("Payid",Boolean.TRUE);
        }
        ...
    }


  • вешаем на форму кнопочку Test с обработчиком onTest()  в InOperationsB
    public void onTest(ActionEvent actionEvent) {

       //-- сюда вставляем логику отображения, у меня просто "вкл-выкл"
 
        Boolean b = (Boolean)viewColumns.get("Payid");
        if(b != null) {
            if( b.booleanValue()) {
                viewColumns.put("Payid",Boolean.FALSE);
            } else {
                viewColumns.put("Payid",Boolean.TRUE);
            }
        }
        //-- refresh table  getVoImpl().executeQuery(); 
  }



  • правим свойство Visible у колонки в отображаемой таблице на EL выражение "#{viewScope.InOperationsB.viewColumns['Payid']}" где  'Payid' у меня имя атрибута в колонке(но это не суть важно)
  • тестируем. По нажатию кнопки колонка то появляется, то исчезает



Комментариев нет:

Отправить комментарий