обновление GWT (GXT) Buttoncell в сетке во время выполнения - PullRequest
1 голос
/ 27 марта 2019

Я создаю ячейку кнопки в 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 Ответ

2 голосов
/ 27 марта 2019

Сетка Sencha GXT использует ListStore. Чтобы показать новые данные в сетке, магазин должен быть обновлен. Это можно сделать, позвонив по номеру store.addAll(theNewDataList). Не забудьте очистить магазин перед добавлением новых значений.

Обновление магазина заставит сетку перерисоваться. Во время перерисовки будет вызван render -метод ButtonCell. Чтобы изменить расположение кнопки, внедрите в метод render то, что вы хотите сделать.

Это пример из GXT Explorer Sencha (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, будет отображаться красная строка, в противном случае - зеленая.

Надеюсь, это поможет.

...