Я пытаюсь добавить выпадающий список в сетке mvc telerik, используя column.Bound. Я могу получить раскрывающийся список для отображения, но изначально он отображается как текстовое поле. По-видимому, если я использую шаблон редактора, он должен работать, но я могу получить значение ошибки не может быть нулевым?выпадающий фон сетки и текст разного цвета
Цель состоит в отображении выпадающего списка в сетке, каждый элемент будет иметь другой цвет текста и фон. Это необходимо заполнить с помощью свойств модели.
В настоящее время я использую ViewData только для того, чтобы все работало, но не было радости. Было рекомендовано, что это можно сделать с помощью шаблонов.
Любые идеи, почему это не работает?
@using System.Collections.Generic;
@model IEnumerable<TelerikChecklist.Models.ProductViewModel>
@(Html.Kendo().Grid(Model)
.Name("gridDropDown")
.Columns(columns =>
{
columns.Bound(p => p.ProductName);
//columns.ForeignKey(p => p.CategoryID, (System.Collections.IEnumerable)ViewData["categories"], "CategoryID", "CategoryName")
// .Title("Category")
// .Width(150);
columns.Bound(p => p.CategoryID).Title("Category Name").ClientTemplate((@Html.Kendo().DropDownList()
.Name("dropdown_#=CategoryID#")
.BindTo((System.Collections.IEnumerable)ViewData["categories"])
.DataTextField("CategoryName")
.DataValueField("CategoryID")
.ValueTemplate("")
.ToClientTemplate().ToString()
)).EditorTemplateName("GridForeignKey");
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Pageable()
.Scrollable()
.HtmlAttributes(new { style = "height:250px;" })
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.PageSize(20)
.ServerOperation(false)
.Events(events => events.Error("errorHandler"))
.Model(model =>
{
model.Id(p => p.ProductID);
model.Field(p => p.ProductID).Editable(false);
model.Field(p => p.CategoryID).DefaultValue(1);
})
.Read(read => read.Action("ForeignKeyColumn_Read", "Home"))
.Update(update => update.Action("ForeignKeyColumn_Update", "Home")).Events(e => e.Change("Category"))
.Create(create => create.Action("ForeignKeyColumn_Create", "Home"))
.Destroy(destroy => destroy.Action("ForeignKeyColumn_Destroy", "Home"))
)
)
GridForeignKey.cshtml
@model object
@(
Html.Kendo().DropDownListFor(m => m)
.BindTo((SelectList)ViewData[ViewData.TemplateInfo.GetFullHtmlFieldName("") + "_Data"])
)
Исправлено нулевое значение, обновляя GridForeignKey, чтобы принять Ienumerable вместо списка выбора. – tau
Получил сетку для отображения по следующей ссылке: http://stackoverflow.com/questions/22030725/adding-a-dropdown-inside-kendo-grid?rq=1 – tau