Использование элемента управления автозаполнения в настраиваемом всплывающем редакторе для сетки
Я использую пользовательский шаблон для всплывающего редактора моей сетки, поэтому я могу отображать только те поля, которые можно редактировать. В этом шаблоне я хотел бы использовать автозаполнение ввода. У меня это "работает": элемент управления находится в шаблоне редактора и делает то, что должен делать автозаполнение.
Однако окно не будет сохранено, когда я сохраню изменения. Как я могу убедиться, что Kendo по-прежнему использует его в качестве поля для моей модели, но также и в качестве элемента автозаполнения?
Сетки:
@(Html.Kendo().Grid<Receipt>()
.Name("GridReceipts")
.Columns(columns => {
columns.Bound(o => o.Id);
columns.Bound(o => o.Supplier);
columns.Bound(o => o.Status);
columns.Command(c => {
c.Edit().Text(" ");
c.Destroy().Text(" ");
});
})
.DataSource(d => d
.WebApi()
.Model(m => m.Id(o => o.Id))
.Create(c => c.Url(Url.HttpRouteUrl("DefaultApi", new { controller = "Receipts" })))
.Read(c => c.Url(Url.HttpRouteUrl("DefaultApi", new { controller = "Receipts" })))
.Update(c => c.Url(Url.HttpRouteUrl("DefaultApi", new { controller = "Receipts", id = "{0}" })))
.Destroy(c => c.Url(Url.HttpRouteUrl("DefaultApi", new { controller = "Receipts", id = "{0}" })))
)
.ToolBar(toolbar => toolbar.Create())
.Editable(e => e.Mode(GridEditMode.PopUp).TemplateName("Receipt"))
.Deferred()
)
Автозаполнение (в шаблоне редактора):
@model Receipt
<div class="k-edit-label">@Html.LabelFor(m => m.Supplier)</div>
<div class="k-edit-field">
@(Html.Kendo().AutoCompleteFor(m => m.Supplier)
.Name("Supplier")
.DataSource(s => {
s.Read("Autocomplete", "Suppliers");
})
.DataTextField("Name")
.MinLength(2)
)
</div>
1 ответ
Попробуй это:
@(Html.Kendo().AutoComplete()
.Name("Supplier")
.DataSource(s => {
s.Read("Autocomplete", "Suppliers");
})
.MinLength(2)
)
Измените AutoCompleteFor на Автозаполнение. Я использую автозаполнение в некоторых моих всплывающих окнах, и все работает нормально. Модель должна привязываться к.Name("Поставщик"), который должен совпадать со свойством объекта. Вам не нужно указывать анонимные типы.
Что касается чтения данных, я возвращаю список строк
Вот пример моего рабочего кода.
Пользовательское всплывающее окно:
@model Charts.Models.Machine
@(Html.Kendo().AutoComplete()
.Name("Grupa")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetGroups", "Helper");
})
.ServerFiltering(true);
})
)
Модель:
public class Machine
{
public virtual int ID { get; set; }
[Required(ErrorMessage = "Pole Grupa nie może być puste.")]
public virtual string Grupa { get; set; }
}
Источник данных Читать:
public ActionResult GetGroups()
{
IEnumerable<string> list = new GroupsRepository().Select().Select(x => x.Nazwa).Distinct();
return Json(list, JsonRequestBehavior.AllowGet);
}