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

Контрол Ссылка с источником автодополнения на клиенте

Контрол Ссылка с источником автодополнения на клиенте

В контроле Ссылка можно получать автодополнение без выполнения запроса на сервер, задав данные для автодополнения на клиенте. Для этого необходимо подменить представления, которые являются источником данных для автодополнения, на программные. В пространстве имен Tessa.UI.Controls.Helpers доступно универсальное программное представление NamedRecordsView<T>, которое позволяет использовать в качестве источника данных IEnumerable<T>. Для использования достаточно задать функции для преобразования T в строку представления и имя, по которому будет производиться фильтрация.

using System; using System.Collections.Generic; using System.Threading.Tasks; using Tessa.UI.Cards; using Tessa.UI.Cards.Controls.AutoComplete; using Tessa.UI.Controls.Helpers;

public sealed class AutoCompleteItem { public AutoCompleteItem(Guid iD, string name) { this.ID = iD; this.Name = name; }

public Guid ID { get; }

public string Name { get; } }

public sealed class ExampleUIExtension : CardUIExtension {

public override async Task Initializing(ICardUIExtensionContext context) { var model = context.Model;

// источник данных для автодополнения var autoCompleteSource = new List<AutoCompleteItem>() { new AutoCompleteItem(new Guid(), "Item1"), new AutoCompleteItem(new Guid(), "Item2") };

model.ControlInitializers.Add(async (control, m, r, ct) => { if (control is AutoCompleteEntryViewModel autoComplete) { if (autoComplete.Name == "Алиас контрола Ссылка") { // создаем представление var tableTypesView = new NamedRecordsView<AutoCompleteItem>( "RefSection", autoCompleteSource, x => new object[] {x.ID, x.Name }, x => x.Name, enableSorting: true ); // подменяем представления на программные autoComplete.View = tableTypesView; autoComplete.ViewComboBox = tableTypesView; } } }); }

}

Back to top