2013-09-12 4 views
2

Я привязываюсь к классу Grid (UserId, FirstName, LastName, Choice). Кто-нибудь знает, как поместить этот код в колонке (Choice) в Кендо Сетка в MVC 4:Kendo UI add DropDownList в Grid (MVC)

@(Html.Kendo().DropDownList() 
     .Name("Test") 
     .DataTextField("Text") 
     .DataValueField("Value") 
     .Events(e => e.Change("change")) 
     .BindTo(new List<SelectListItem>() 
     { 
      new SelectListItem() 
      { 
       Text = "Option1", 
       Value = "1" 
      }, 
      new SelectListItem() 
      { 
       Text = "Option2", 
       Value = "2" 
      } 
     })) 
<script> 
    function change() { 
     var value = $("#Choice").val(); 
    } 
</script> 

....

columns.Bound(p=> p.FirsName); 
columns.Bound(p => p.LastName); 
//How to Bind Choice??? 

Я также нужен текст ("ОПЦИЯ1" , или «Вариант2») в коде BackEnd. Любые решения? Спасибо в продвинутом режиме.

Отредактировано

я сделал именно то, что они сказали:

Вид:

columns.Bound(p => p.Choice).ClientTemplate("#=Choice#"); 

Контроллер:

public ActionResult Index() 
    { 
     PopulateCategories(); 
     return View(); 
    } 

.....

private void PopulateCategories() 
     { 
      var dataContext = new TestDB(); 
      var categories = dataContext.Peoples 
       .Select(c => new People() 
       { 
        ChoiceID = c.ChoiceID, 
        Choice = c.Choice 
       }) 
       .OrderBy(e => e.Choice); 
      ViewData["categories"] = categories; 
      ViewData["defaultCategory"] = categories.First(); 
     }  

Но это не работает ...

+0

Можете ли вы показать нам свой контроллер, пожалуйста? Кроме того, если это MVC4, то обычно вы будете использовать Option1 Text из кода, расположенного за ним. Затем до @Model – Pogrindis

+0

http://stackoverflow.com/questions/9559269/how-to-use-combobox-as-kendo-ui- grid-column – Pogrindis

ответ

0

Вам просто нужно принять тп взглянуть на документацию они обеспечивают: http://demos.kendoui.com/web/grid/editing-custom.html

Это обычай сетки, так что могут быть также некоторые JS изменения, связанные также , Вы привязываетесь к своей модели, и kendo.js будет следить за остальными.

@(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.ClientProductViewModel>() 
.Name("grid") 
.Columns(columns => 
{ 
    columns.Bound(p => p.ProductName); 
    columns.Bound(p => p.Category).ClientTemplate("#=Category.CategoryName#").Width(160); 
    columns.Bound(p => p.UnitPrice).Width(120); 
    columns.Command(command => command.Destroy()).Width(90); 
}) 
.ToolBar(toolBar => 
    { 
     toolBar.Create(); 
     toolBar.Save(); 
    }) 
.Editable(editable => editable.Mode(GridEditMode.InCell)) 
.Pageable() 
.Sortable() 
.Scrollable() 
.HtmlAttributes(new { style = "height:430px;" }) 
.DataSource(dataSource => dataSource 
    .Ajax() 
    .Batch(true) 
    .ServerOperation(false) 
    .Events(events => events.Error("error_handler")) 
    .Model(model => 
    { 
     model.Id(p => p.ProductID); 
     model.Field(p => p.ProductID).Editable(false); 
     model.Field(p => p.Category).DefaultValue(
      ViewData["defaultCategory"] as Kendo.Mvc.Examples.Models.ClientCategoryViewModel); 
    }) 
    .PageSize(20) 
    .Read(read => read.Action("EditingCustom_Read", "Grid")) 
    .Create(create => create.Action("EditingCustom_Create", "Grid")) 
    .Update(update => update.Action("EditingCustom_Update", "Grid"))   
    .Destroy(destroy => destroy.Action("EditingCustom_Destroy", "Grid")) 
) 
) 

Ваш файл csHTML должен связывать вход и переход на триггере, в зависимости от того, что вы делаете.

+0

Я сказал это себе в то же самое время, когда прочитал эту размещенную демоверсию, когда посмотрел на нее. где is ') .ClientTemplate (" # = Category.CategoryName # ").' Определено. Я предполагаю, что это указывает на отдельное кендо ddl, или я совершенно не прав. Просто не видя, как этот маленький код создает ddl. – CSharper

+2

. Код wont render dll будет использовать синтаксис бритвы и iis для привязки по мере необходимости. Это было некоторое время, так как я занимался бритвой, но плохо вернулся и дважды проверял, чтобы убедиться! Я помню, что кендо был не самым удобным для пользователя с mvc, если я правильно помню! – Pogrindis

+1

От взгляда на Документы и в разделе HTML кажется немного более понятным, что происходит. Я знаю, что ваш код прямо из Документов и из того, что дано 'ClientTemplate (" # = Category.CategoryName # ")' ничего не значит для меня. – CSharper