0

我正在为我的网格的弹出编辑器使用自定义模板,所以我只能显示可以编辑的字段。在这个模板中,我想使用一个自动完成输入。我已经让它“工作”了:控件位于编辑器模板中,并且执行自动完成应该执行的操作。

但是,当我保存更改时,该框不会保存。如何确保 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>
4

1 回答 1

2

试试这个:

@(Html.Kendo().AutoComplete()
    .Name("Supplier")
    .DataSource(s => {
        s.Read("Autocomplete", "Suppliers");
    })
    .MinLength(2)
)

将 AutoCompleteFor 更改为 AutoComplete。我在一些自定义弹出窗口中使用了自动完成功能,一切正常。模型应该绑定到 .Name("Supplier") 这应该与对象属性相同。您不必指定匿名类型。

至于数据源读取,我返回字符串列表

这是我的工作代码示例。

自定义弹出:

@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);
}
于 2014-10-21T10:07:52.843 回答