Как я могу оформить элементы CellList для каждого элемента?
У меня есть CellList в GWT 2.5. Каждый элемент ячейки является классом, основанным на AbstractCell и определенным в файле UiBinder.
Как я могу установить разные стили для каждого элемента? Мне бы хотелось, чтобы некоторые появлялись в "отключенном" стиле, а другие - в "активном".
Это содержимое моего файла.ui.xml. Я не включил определения стилей или леса UiBinder.
<div class="{style.contact}">
<div>
<div>
<img class="{style.photo}" src="{photo}"/>
</div>
<div class="{style.names}">
<div>
<p><ui:text from="{name}"/></p>
<p><ui:text from="{jobTitle}"/></p>
<p><ui:text from="{company}"/></p>
</div>
</div>
</div>
</div>
3 ответа
Решение
Использование CellList.getRowElement()
:
cellList.getRowElement(3).addClassName("css-disabled");
cellList.getRowElement(4).addClassName("css-active");
Вы можете добиться добавления имен стилей, переопределив метод render() вашей ячейки следующим образом:
@Override
public void render( com.google.gwt.cell.client.Cell.Context context, T value, SafeHtmlBuilder sb )
{
if( disable condition met )
{
// Apply disabled style
sb.appendHtmlConstant( "<div class='css-style-disabled' >"+ value+" </div>"
}
else
{
super.render( context, value, sb );
}
}
Итак, добавьте css-style-disabled
класс к вашему CSS-файлу начните его стилизацию.
Решение texasbruce - решение, но если вы используете ListDataProvider, вам нужно будет изменить время любого вызова addClassName() таким образом:
new Timer() {
@Override
public void run() {
<< call cellList.getRowElement(0).addClassName("css-disabled") here >>;
}
}.schedule(1);