У меня есть поле автозаполнения для имен внутри сетки контактов.
Пользователь должен иметь возможность ввести имя, выбрать его из списка, а остальные контактные данные будут заполнены автоматически. Это работает правильно.
Однако пользователь также должен иметь возможность вручную вводить данные о человеке, которого нет в списке, а также сохранять их. Это НЕ происходит. После того, как поле имени потеряет фокус, значение останется. После сохранения значение исчезает, так как оно неправильно привязано к столбцу.
Я последовал совету (вариант 1, поскольку я бы предпочел не использовать ViewData) в этом ответе, но не могу получить значения для правильной привязки.
Если я назову виджет автозаполнения так же, как поле столбца, автозаполнение не будет работать, поле будет обычным текстовым полем. Если я назову виджет автозаполнения другим именем, поле ввода станет полем автозаполнения с именем виджета, но не привяжет данные к столбцу.
Объявление столбца
.Columns(columns =>
{
columns.Bound(e => e.Name).EditorTemplateName("NameLookupConcatenated");
columns.Bound(e => e.Phone);
columns.Bound(e => e.Email);
columns.Command(command => { command.Edit(); command.Destroy(); });
})
Модель сетки
public int ID { get; set; }
public string Name { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
Автозаполнение
@model string
@(Html.Kendo().AutoComplete()
.Name("concatenated")
.DataTextField("Concatenated")
.Filter("contains")
.DataSource(source => source.Read(read => read.Action("GetUserInfo", "Contacts")
.Data("onAdditionalData"))
.ServerFiltering(true))
.Events(e => e.Select("onUserSelect"))
)
Автозаполнение модели
public string Email { get; set; }
private string FirstName { get; set; }
private string LastName { get; set; }
public string Concatenated
{
get { return string.Format("{0} {1}", FirstName, LastName); }
}
public string TelePhoneNo { get; set; }