Перейти к содержанию

Быстрый поиск в контроле представления, как на вкладке "История заданий"

Быстрый поиск в контроле представления, как на вкладке “История заданий”

При создании быстрого поиска по всему представлению стоит учитывать, что он происходит на клиенте, соответственно, представление не должно использовать пейджинг.

using System; using System.Threading.Tasks; using Tessa.Extensions.Platform.Client.UI.TaskHistory; using Tessa.UI.Cards; using Tessa.UI.Cards.Controls; using Tessa.Platform.Collections;

public sealed class YourUIExtension : CardUIExtension { public async override Task Initialized(ICardUIExtensionContext context) { if (!context.Model.Controls.TryGet("YourViewControlAlias", out var controlViewModel)) { throw new ArgumentException($"Control ViewModel with Name='{"YourViewControlAlias"}' not found."); } var viewControlViewModel = controlViewModel as CardViewControlViewModel;

// если в представлении уже определен быстрый поиск, то удаляем его var quickSearchIndex = viewControlViewModel.TopItems.Items.IndexOf(i => i is QuickSearchViewModel); if (quickSearchIndex != -1) { viewControlViewModel.TopItems.Items.RemoveAt(quickSearchIndex); }

// добавляем быстрый поиск var clientQuickSearch = new ClientQuickSearchViewModel(viewControlViewModel); viewControlViewModel.TopItems.Items.Insert(quickSearchIndex != -1 ? quickSearchIndex : 0, clientQuickSearch); } }

Регистрация расширения:

[Registrator] public sealed class Registrator : RegistratorBase {

public override void RegisterUnity() { this.UnityContainer .RegisterType<YourUIExtension>( new ContainerControlledLifetimeManager()); }

public override void RegisterExtensions(IExtensionContainer extensionContainer) { extensionContainer .RegisterExtension<ICardUIExtension, YourUIExtension>(x => x .WithOrder(ExtensionStage.AfterPlatform) .WithUnity(this.UnityContainer)); } }

Back to top