[ELMA4] Поиск (FilterModel)
Методы для работы
C#
FilterModel.Builder()
– получение построителя для установки настроек.
Пример:
@Html.Partial("Filter/FilterModel", Model.FilterModel.Builder().Model,
new ViewDataDictionary { TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "DataFilter" } })
Настройки поиска:
SubmitText
– текст кнопки выполнения поиска;ApplayFilterScript
– метод для фильтрации;FilterUrl
– ссылка на фильтр;SetFastSaveFilterRoute
– сохранение фильтра;Header
– заголовок, входным параметром являетсяstring;
HeaderContent
– кастомый заголовок, входным параметром является разметкаMvcHtmlString;
FilterLinkUrl(string)
– ссылка на текущий поиск для работы кнопки-фильтра;DefaultFields(new List<Guid>)
– список свойств для фильтрации;SimpleSearchTr
– кастомизация поиска;FilterMenuItemCode
– добавление дерева фильтров.
Пример: кастомизация поиска, чтобы добавить кнопки.
@helper SimpleSearchTr(HtmlHelper<Common.Models.FilterModel> html)
{
@Html.FilterSearchForm().FastSearchBoxFor("").Enabled(false).IsShortSearch(true).ActionButtons(a =>
{
// добавление кнопки-фильтра
a.Add(new FastSearchFilterTreeButton(SR.T("Все процессы"), Url.Action("Index") + "?FilterId=")
{
OnClick = string.Format("openPopoverWindow('{0}', this);", FastSearchFilterTreeButton.GetFilterTreeId(ProcessesMenuItems.IMPROVEMENT)),
Index = 3
});
// добавление кнопки
a.Add(new FastSearchActionButton()
{
Style = new HtmlStyle(),
OnClick = "click()",
CssClass = "test",
Icon = "#add.svg",
Index = 2
});
})
}
@Html.Partial("Filter/FilterModel", builder
.SimpleSearchTr(helper => SimpleSearchTr(helper))
.Model)
Пример: добавление контента в кастомный поиск.
@helper SimpleSearchTr(HtmlHelper<Common.Models.FilterModel> html)
{
@Html.FilterSearchForm().FastSearchBoxFor(m => m.Filter.SearchString)
.Enabled(false)
.IsShortSearch(true)
.Custom(@<text>
@if (searchTasksType == SearchTasksType.Incoming)
{
<div class="custom-fastSearch-item">
<div class="custom-fastSearch-propertyName">
<b>@SR.T("От")</b>
</div>
<div class="custom-fastSearch-property">
@Html.Editor(m => m.CreationAuthor })
</div>
</div>
}
<div class="custom-fastSearch-buttons">
@Html.FilterSearchForm().FastSearchButton()
</div>
</text>);
}
@Html.Partial("Filter/FilterModel", builder
.SimpleSearchTr(helper => SimpleSearchTr(helper))
.Model)
Точки расширения
IFilterPropertiesExtension
– изменение видимости свойств в поиске.
Основные изменения в ELMA4 по сравнению с ELMA3
1. Изменена разметка поиска. Следует проверить скрипты.
Форма поиска в ELMA3:
Форма поиска в ELMA4:
2. Перенесено дерево фильтров из левого меню в поиск. В ELMA3 было реализовано в FilterMenuItemRenderer : IMenuItemRenderer
.
Пример: чтобы перенести дерево, нужно указать в FiltermenuItemCode идентификатор элемента левого меню, к которому привязан фильтр.
@Html.Partial("Filter/FilterModel", Model.FilterModel.Builder()
.FilterMenuItemCode(TasksMenuItems.workLogApprove)
.Model,
new ViewDataDictionary { TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "DataFilter" } })
3. Добавлены методы FilterLinkUrl
, HeaderContent
, Header
.