Kendo DropDown возвращает значение вместо текста - PullRequest
0 голосов
/ 14 мая 2018

Я использую раскрывающийся список в качестве шаблона Editor для столбца в сетке:

@model Guid?

@(Html.Kendo().DropDownListFor(m => m)
    .DataValueField("Id")
    .DataTextField("Name")
    .DataSource(dataSource =>
    {
        dataSource.Read(read => read.Action(MVC.Controller.ActionNames.ActionName_Read, MVC.Controller.Name))
        .ServerFiltering(true);
    })
    .ValuePrimitive(true)
)

Мой контроллер:

public virtual ActionResult ActionName_Read()
        {
            var applicationID = AppSettings.Id.Guid;

            var return = _db.table.Where(w => w.ID == appID).Select(s => new { s.Name, Id = s.Guid});

            return Json(return, JsonRequestBehavior.AllowGet);
        }

Мой столбец:

columns.Bound(c => c.Name).Filterable(f => f.UI("$.proxy(filterFunction, {field: Name})").Operators(o => o.ForString(e => e.Clear().IsEqualTo("Is equal to").IsNotEqualTo("Is not equal to")))).EditorTemplateName("EditorTemplateName");

Я добавил .ValuePrimitive (true), и он возвращает идентификатор, но если я его удаляю, он возвращает [объектный объект].

У меня есть имя и идентификатор, возвращаемые из действия, но только поле именизаполняется и заполняется идентификатором.

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Я зациклился на событии изменения моего DropDownList в EditorTemplate и сделал следующее:

function selectRow(name, event) {
var rowUid = $("#Name").closest("tr").attr("data-uid");
var rowItem = $("#" + name).data("kendoGrid").dataSource.getByUid(rowUid);

var currentName = event.sender._focused[0].textContent;
var currentDataSource = event.sender.dataSource._data;

for (var i = 0; i < currentDataSource.length; i++) {
    if (currentDataSource[i].Name=== currentName) {
        rowItem.set("Id", currentDataSource[i].Id);
        rowItem.set("Name", currentDataSource[i].Name);
    }
}

}

0 голосов
/ 14 мая 2018

Вы можете использовать свойство .ValueTemplate ().

вот один пример https://demos.telerik.com/aspnet-mvc/dropdownlist/template

.ValueTemplate("#:yourObject.Name#")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...