#object #formatting #rendering #vaadin-grid
Вопрос:
Я пытаюсь отформатировать столбец типа объекта со следующим кодом. Попробовал то, что предлагается, чтобы получить столбец перед настройкой средства визуализации, но я получил null
от getColumn()
. Может ли кто-нибудь помочь или указать мне на рабочий пример форматирования столбцов типа объекта?
Gridlt;LinkedHashMaplt;String, Objectgt;gt; grid = new Gridlt;gt;(); .. grid.addColumn(h -gt; h.get(entry.getKey())) .setCaption(captn) .setStyleGenerator(item -gt; "v-align-right"); .. if (NumberUtils.isNumber(entry.getValue())) { NumberRenderer rdr = new NumberRenderer("###.###,###,###,##"); Column lt;LinkedHashMaplt;String, Objectgt;,Doublegt; col = (Column lt;LinkedHashMaplt;String, Objectgt;,Doublegt;) grid.getColumn(entry.getKey()); col.setRenderer(rdr); }
Комментарии:
1.
grid.getColumn(entry.getKey());
возвращаетnull
, потому что вы используете ключ, который не был установлен в столбце при его добавлении.2. Если вы пытаетесь изменить визуализатор на лету, это не сработает. У вас не может быть другого средства визуализации для каждой строки сетки. Вы можете установить средство визуализации для столбца сетки, но тогда все строки будут иметь один и тот же средство визуализации.
3. спасибо за ответ, моя сетка содержит сочетание строковых и числовых столбцов, которые создаются во время выполнения, я пытаюсь использовать пользовательский рендерер для каждого числового столбца.
4. Столбец создается с тем же ключом. без кодов setrenderer сетка отображается правильно, но без форматирования. поэтому я знаю, что ключ, который я передал, является правильным ключом для вновь созданного col
5. после дальнейшего тестирования с использованием ссылочной переменной из addcolumn () я обнаружил, что созданный ею тип col-это столбец lt;LinkedHashMaplt;Строка, объектgt;,Объектlt;Строка, Объектgt;gt;, в то время как NumberRenderer ожидает столбец lt;Строка, объектgt;gt;lt;LinkedHashMaplt;Строка,объектgt;, Doublelt;Строка, объектgt;gt; .в любом случае, нужно ли выполнять типизацию или преобразование?