#gwt #gxt
#gwt #gxt
Вопрос:
Я создаю ячейку кнопок в GXT Grid и добавляю ячейку в свой столбец сетки следующим образом
myCol.setCell(getButtonCell());
Теперь все ячейки отрисованы, после этого зависит от вызова сервера, я хочу обновить свою ячейку новым значением MyDTO.
Итак, при успешном выполнении RPC я хочу вызвать этот рендеринг для всех моих ячеек и обновить там значения. Как я могу этого добиться.
public ButtonCell<MyDTO> getButtonCell()
{
ButtonCell<MyDTO> cellTest = new ButtonCell<MyDTO>()
{
@Override
public void render(Context context, MyDTO value, SafeHtmlBuilder
sb)
{
sb.appendHtmlConstant(value.getName());
}
Ответ №1:
В сетке Sencha GXT используется хранилище списков. Чтобы отобразить новые данные внутри grid, хранилище необходимо обновить. Это можно сделать, вызвав store.addAll(theNewDataList)
. Не забывайте очищать хранилище перед добавлением новых значений.
Обновление хранилища приведет к перерисовке сетки. Во время перерисовки будет вызван render
-метод ButtonCell
. Чтобы изменить расположение кнопки, реализуйте внутри render
-метода то, что вы хотите сделать.
Это пример из Sencha GXT Explorer (https://examples.sencha.com/gxt/examples/#ExamplePlace:grid_aggregationgrid ):
final NumberFormat numberFormat = NumberFormat.getFormat("0.00");
changeColumn.setCell(new PropertyDisplayCell<Double>(new DoublePropertyEditor(numberFormat)) {
@Override
public void render(com.google.gwt.cell.client.Cell.Context context, Double value, SafeHtmlBuilder sb) {
String style = value < 0 ? "red" : "green";
sb.appendHtmlConstant("<span style='color:" style "'>");
super.render(context, value, sb);
sb.appendHtmlConstant("</span>");
}
});
В случае, если значение меньше 0, строка будет отображаться красной, в противном случае — зеленой.
Надеюсь, это поможет.
Комментарии:
1. этот ответ правильный, кроме того, если вы хотите также изменить его стиль, вы также можете setStyleName , который переопределит старый css элемента