Я сейчас создаю свою первую сетку кендо. Почти все работает, за исключением того, что мои Status
enum и Code
(в основном id) не передаются моему контроллеру в действии Create
.
Вот моя таблица кендо (части, которые вещество) -
@(Html.Kendo().Grid<MyViewModel>()
.Name("grid")
.AutoBind(false)
.HtmlAttributes(new { @class = "grid-clickable-edit" })
.Columns(columns =>
{
columns.Command(command =>
{
command.Edit().IconClass("fas fa-pencil").UpdateIconClass("fas fa-check").CancelIconClass("fas fa-ban");
command.Destroy().IconClass("fas fa-trash");
})
.ClientHeaderTemplate(Html.GridAddButton())
.Width(180);
//some fields
columns.Bound(model => model.Code)
.EditorTemplateName("GridDropdownEditor")
.EditorViewData(new {data = ViewBag.CodeList})
.ClientTemplate("#:Code#");
//some other fields
columns.Bound(model => model.StatusId)
.EditorTemplateName("StatusEditor");
.ClientTemplate("#:StatusName#");
//more fields
})
.Pageable(pg => pg.Numeric(false).PreviousNext(false))
.Sortable()
.Scrollable(scroll => scroll.Virtual(true))
.Filterable(x => x.Enabled(false))
.Editable(editable => editable.Mode(GridEditMode.InLine))
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.ServerOperation(true)
.Model(model => { model.Id(m => m.Id); })
.Read(...)
.Create(update => update.Action(...))
.Update(update => update.Action(...))
.Destroy(update => update.Action(...))
))
ViewBag.CodeList представляет собой список идентификаторов каждого кода, а также описание. Раскрывающийся список показывает идентификатор и описание, объединенные вместе.
GridDropdownEditor -
@model object
@(Html.Kendo().DropDownListFor(m => m)
.DataTextField("Text")
.DataValueField("Value")
.BindTo((IEnumerable<SelectListItem>)ViewData["data"])
)
StatusEditor -
@using MyProject.Data.Models
@using MyProject.Helpers
@(Html.Kendo().DropDownListFor(m => m)
.DataTextField("Text")
.DataValueField("Value")
.BindTo(EnumHelper<BidStatus>.ToSelectList())
)
)
Метод EnumHelper.ToSelectList()
в основном получает значения String и Id из моего Status
Enum, а затем помещает его в SelectList
Status Enum -
public enum Status
{
Status1 = 1,
Status2 = 2,
Status3 = 3
}
MyViewModel (опять же, части, которые имеют значение) -
public int? Code { get; set; }
public Status? StatusId { get; set; }
public string StatusName
{
get { return StatusId.ToString(); }
}
Раскрывающиеся списки для Status и Code заполняются очень хорошо, но они никогда не собираются сеткой и не передаются контроллеру. К вашему сведению - поля Код и Статус должны быть обнуляемыми. Дайте мне знать, если потребуется дополнительная информация, и я был бы рад включить ее.
То, что я пробовал
Я попытался использовать решения здесь - Кендо MVC сетка с редактируемым столбцом enum , который у меня не работал.