Каков наилучший способ скрыть "Завершенные или отмененные элементы" в таблице?
Поэтому я настроил модель / таблицу, которую пользователи будут использовать в качестве списка задач проекта. Мне бы хотелось, чтобы при изменении состояния (поля в модели) элемента на Завершено или Отменено, оно скрывалось.
Таким образом, они имеют дело только с активными записями. Но я также хотел бы, чтобы они могли просматривать эти скрытые (заархивированные) элементы при необходимости.
Я добавил следующий код в параметр onAttach таблицы
var datasource = app.datasources.Projects;
datasource.query.filters.Status._notContains = 'Completed';
datasource.load();
И тогда у меня есть кнопка со следующим кодом, чтобы они могли видеть скрытые / заархивированные элементы:
widget.datasource.query.clearFilters();
widget.datasource.load();
app.closeDialog();
var datasource = app.datasources.Projects;
datasource.query.filters.Status._contains = 'Completed';
datasource.load();
Это работает, но я чувствую, что мог бы быть лучший / более изящный способ достигнуть этого. Тем более, что приложение должно загружать данные, а затем фильтровать их (что приводит к более медленной загрузке). (Я думаю, что у меня там тоже может быть какой-то избыточный код)
Также я чувствую, что мне что-то не хватает с моим синтаксисом, потому что я не могу заставить его отфильтровывать Завершено и Отменено
Спасибо за помощь!
2 ответа
Если у вас есть одна страница элементов в таблице, а элементов не так много, вы можете выполнить фильтрацию на стороне клиента. Например, вы можете использовать выражение привязки, чтобы добавить стиль "projectHidden" в строку на основе некоторой логики, а затем использовать CSS, чтобы изменить видимость строки.
Для вашего второго блока кода нет причин очищать фильтры, загружать, устанавливать фильтры и затем загружать снова. Просто очистите фильтры, установите новый фильтр и вызовите load. Также, если вы вручную управляете загрузкой запроса, вам может потребоваться отменить настройку в источнике данных для автоматической загрузки данных.
var datasource = app.datasources.Projects;
datasource.query.filters.Status._notEquals = 'Completed';
datasource.query.filters.Status._notEquals = 'Cancelled';
datasource.load();