<< Click to Display Table of Contents >> Разработка > Элементы разработки > Типы сущностей > Списки Пример настройки фильтрации записей в списке |
Создан список «Входящие документы» и для него добавлена панель фильтрации. Необходимо добавить обработчик события Фильтрация и настроить фильтрацию записей в списке по критериям журнал регистрации, статус, вид документа и интервал времени, в котором документ был зарегистрирован или создан.
Чтобы добавить логику работы панели фильтрации:
1.В редакторе типа документа «Входящее письмо» (IncomingLetter) последовательно раскройте узлы «Списки», «Collection» и выделите узел «FilterPanel».
2.На панели свойств установите флажок Фильтрация и перейдите по ссылке. Откроется редактор программного кода.
3.Напишите код для фильтрации сущностей в списке. Обработчик события выполняется на веб-сервере.
Важно. В начало обработчика с помощью аргумента _filter добавьте проверку, что панель фильтрации включена.
/// <summary>
/// Фильтрация списка входящих документов.
/// </summary>
public override IQueryable<T> Filtering(IQueryable<T> query, Sungero.Domain.FilteringEventArgs e)
{
// Проверка того, что панель фильтрации включена.
if (_filter == null)
return query;
// Контрол "Ссылка на сущность". Фильтр по журналу регистрации.
// Значение выбирается из справочника "Журналы регистрации".
if (_filter.DocumentRegister != null)
query = query.Where(d => d.DocumentRegister == _filter.DocumentRegister);
// Контрол "Набор флажков". Фильтр по статусу документа.
// Возможные значения: Зарегистрирован, Не зарегистрирован.
if (_filter.Registered || _filter.NotRegistered)
query = query
.Where(d => (_filter.Registered && d.RegistrationState == OfficialDocument.RegistrationState.Registered) ||
(_filter.NotRegistered && d.RegistrationState == OfficialDocument.RegistrationState.NotRegistered));
// Контролы "Набор флажков" и "Период дат".
// Фильтр по интервалу времени в котором документы были зарегистрированы
// или созданы.
var periodBegin = Functions.Module.GetPeriodBeginFromFilter(_filter.LastWeek, _filter.LastMonth, _filter.Last90Days, _filter.DateRangeFrom);
var periodEnd = Functions.Module.GetPeriodEndFromFilter(_filter.LastWeek, _filter.LastMonth, _filter.Last90Days, _filter.DateRangeTo);
query = query.Where(j => (j.RegistrationDate ?? j.Created) >= periodBegin && (j.RegistrationDate ?? j.Created) <= periodEnd);
return query;
}
4.Опубликуйте и проверьте разработку.
В результате в списке будут отображаться входящие документы организации с учетом фильтров:
© Компания Directum, 2024 |