Мне нужно создать компонент, который по сути позволит редактору выбрать пару пользователей из организации и затем отобразить эту информацию на странице. Информация о пользователях поступает из конечной точки службы REST, но на данный момент это не самая важная информация.
Свойство должно позволять:
- выбирать несколько значений
- allow typeahead (потому что организация может иметь тысячи пользователей)
Я уже пробовал:
определить свойство как IList<string>
, что дает мне приятный пользовательский интерфейс для редактирования, но не имеет заголовка типа:
public virtual IList<string> Users { get; set; }
создал реализацию для ISelectionQuery
, чтобы обеспечить заголовок и фильтрацию для указанного запроса, но это не позволяет несколько значений и переопределяет пользовательский интерфейс и выдает ошибку при сохранении:
[ServiceConfiguration(typeof(ISelectionQuery))]
public class UserSelectionQuery : ISelectionQuery
{
private readonly SelectItem[] _items;
public UserSelectionQuery()
{
_items = new[]
{
new SelectItem() {Text = String.Empty, Value = string.Empty},
new SelectItem() {Text = "John Doe", Value = "john.doe@alloy.com"},
new SelectItem() {Text = "Jane Doe", Value = "jane.doe@alloy.com"}
};
}
public ISelectItem GetItemByValue(string value)
{
return _items.FirstOrDefault(i => i.Value.Equals(value));
}
public IEnumerable<ISelectItem> GetItems(string query)
{
return _items.Where(i => i.Text.Contains(query));
}
}
Использовал это так:
[AutoSuggestSelection(typeof(UserSelectionQuery))]
public virtual IList<string> Users { get; set; }
Я бы хотел, чтобы все было просто и максимально использовать возможности OOTB. Я также открыт для предложений, как обойти проблему.