2014-12-15 3 views
0

Я пытаюсь добавить выпадающий список в сетке 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"]) 

) 
+0

Исправлено нулевое значение, обновляя GridForeignKey, чтобы принять Ienumerable вместо списка выбора. – tau

+0

Получил сетку для отображения по следующей ссылке: http://stackoverflow.com/questions/22030725/adding-a-dropdown-inside-kendo-grid?rq=1 – tau

ответ

0

решена путем создания другого шаблона:

columns.Bound(p => p.Category.CategoryName).Title("CategoryName").EditorTemplateName("GridForeignKey2"); 

@using System.Collections;

@(Html.Kendo().DropDownList() 
     .Name("NeatProperty") 
     .DataTextField("CategoryName") 
     .DataValueField("CategoryID") 
     .BindTo((System.Collections.IEnumerable)ViewData["categories"]) 
     .Template("<div style='background-color:#: data.CategoryColor #'><span class=\"k-state-default\"></span>" + "<span class=\"k-state-default\"><p style='color:#: data.CategoryTextColor #;'>#: data.CategoryName #</p></span></div>") 
     .ValueTemplate("<div style='background-color:#: data.CategoryColor #;'><span>#:data.CategoryName#</span></div>") 

)

Видел это в другой пост на StackOverflow, но потерял связь так и не смогла опубликовать.

Смежные вопросы