Scout Eclipse table Форма данных количество строк

Я сталкиваюсь с очень странным поведением, и я не знаю, намеренно ли это или это ошибка внутри разведчика. (Я мог понять, почему это может быть функцией, но тогда мне нужно немного обойти...)

У меня есть таблица внутри формы. Предположим, у меня есть две колонки Column A а также Column B и у меня есть два ряда.

------------------------
| Column A  | Column B | 
------------------------
|  10       | 20       |
------------------------
|  30       | 40       |
------------------------

если я проверю на клиенте последнюю строку, как это:

getTField().getTable().getAColumn().getValue(getTField().getTable().getRowCount() -1) = 30

final TFormData formData = new TFormData();
this.exportFormData(formData);
formData.getTable().getAColumn(formData.getTable().getRowCount() - 1) = 30

и это нормально. Теперь я обновляю последнюю строку и удаляю первую, так что теперь это выглядит так:

------------------------
| Column A  | Column B | 
------------------------
|  60       | 40       |
------------------------

Теперь, если я попробую так же, как и раньше:

// row count = 1
getTField().getTable().getAColumn().getValue(getTField().getTable().getRowCount() -1) = 60 

final TFormData formData = new TFormData();
this.exportFormData(formData);
// row count = 2
formData.getTable().getAColumn(formData.getTable().getRowCount() - 1) = 30
formData.getTable().getAColumn(formData.getTable().getRowCount() - 2) = 60

как предыдущая (удаленная) строка остается внутри данных формы.

Я понимаю, что просто обновить уже созданные строки до текущего значения быстрее, чем заменить все строки, но не следует getRowCount вернуть правильный номер?

1 ответ

Решение

Если я правильно понимаю ваш вопрос, вы хотите знать, почему удаленные строки остаются в таблице и как это влияет на количество строк.

Во-первых: Eclipse Scout может обрабатывать удаленные строки двумя способами:

  1. "Режим корзины", в котором удаленные строки просто меняют свое состояние (ITableRow.getRowState()) чтобы ITableRow.STATUS_DELETED, Вы можете использовать это, чтобы отправить все эти строки таблицы в службу и легко увидеть, какие строки были удалены, и сохранить эти изменения. (Так же, как вы можете видеть, какие строки были вставлены / изменены). Этот режим обычно используется, если ваш пользователь добавляет / изменяет / удаляет несколько строк, и изменения сохраняются только в "действии сохранения" (кнопка "ОК" или аналогичная).
  2. "Режим немедленного удаления", при котором строки удаляются сразу после их удаления. Вы не сможете получить эти отброшенные строки из модели разведчика позже. Обычно используется, когда вы работаете на странице таблицы, когда любые изменения пользователя должны применяться немедленно.

Вы можете переключаться между этими двумя режимами, переопределяя AbstractTable.getConfiguredAutoDiscardOnDelete(), Возвращаемое значение по умолчанию falseкоторый является "режим 1", trueпереведет вас в "режим 2" и попросит разведчика немедленно отказаться от любой строки, которая будет удалена.

Чтобы обратиться к числу строк / индексной части вашего вопроса:

Если вы удаляете строки и не удаляете их (режим 1), вам нужно будет учитывать эти строки, которые не видны пользователю. Количество строк будет включать эти удаленные невидимые строки!

Источник: Eclipse Scout Concept Wiki: Table - Удалить строку из таблицы

Другие вопросы по тегам