2014-04-22 2 views
1

Мне нужно сделать заказ для ClientTemplate, как у нас для EditorTemplateName. Так что я хочу сделать что-то вроде этого:DropDownList в управлении сеткой кендо (по ClientTemplate)

Шаблон:

@(
    Html.Kendo().DropDownListFor(m => m)   
      .BindTo((SelectList)ViewData["ExamResults"]) 
       .Template("#:Value# #:Text#") 
       .DataTextField("Text") 
       .DataValueField("Value") 
      .Events(e => e 
       .Change("examResultOnDropDownChange") 
       .Open("examResultOnOpen")) 
) 

А добавление столбца в сетке: .EditorTemplateName("ExamResultGridForeignKey")

, но я хочу: .ClientTemplate("ExamResultGridForeignKey") или что-то подобное (но не работает):

.ClientTemplate(
       Html.Kendo() 
        .DropDownList() 
        .Name("#=Id#") 
        .BindTo((SelectList)ViewData["ExamResults"]) 
        .Template("#:Value# #:Text#") 
        .DataTextField("Text") 
        .DataValueField("Value") 
) 

Все, что мне нужно для создания поля с DropDownList в недоступном для редактирования м ode (когда мы отображаем значение) выглядит как редактируемый DropDownList.

ответ

1

Вот так отображается мой выпадающий список. IsInForecast - это поле bool. Все, что делает If else, - это правильное значение ddl (true/false), выбранное на основе значения свойства IsInForecast. Тебе нужно настроить его на свои нужды.

columns.Bound(m => m.IsInForecast).Title("Is Forecasted").ClientTemplate(

    "# if (IsInForecast == true) { #" + 

          "<select id='#= OrderId #' onchange=save('#= OrderId #'); style='Width: 80px; color: 'navy' > " + 
          "<option id='yes' selected value='1'>Yes</option>" + 
          "<option id='no' value='0'>No</option>" + 

          "</select>" + 
        "# } else { #" + 
          "<select id='#= OrderId #' onchange=save('#= OrderId #'); style='Width: 80px; color: 'navy' > " + 
          "<option id='yes' value='1'>Yes</option>" + 
          "<option id='no' selected value='0'>No</option>" + 
         "# } #" 
      );    

Где вы видите "<select id='#= OrderId #', которая устанавливает поле DDL ID так вы знаете, которые DropDownList/запись редактируется. onchange=save('#= OrderId #'); вызывает функцию JS, которая передает свойство модели OrderId методу. Чтобы получить выбранное значение правильного ddl, вы только что изменили, вы можете это сделать.

save(orderId) function{ 
    var ddl = # + orderId; 
    var getSelectedValue = $(ddl).val(); 
} 

Это даст стандартный DDL. Вы можете проверить документацию здесь

http://demos.telerik.com/kendo-ui/web/grid/editing-custom.html 
+0

Yestaday Я попытался сделать некоторые Extensions методы родовых параметров на GridColumnFactory . Но у меня есть ошибка (Kendo can not parse им принадлежит MVVM, если я попытаюсь сделать параметр Name с этим шаблоном «# = Id #») ... – Novikov

+0

Так что теперь я думаю, что ваш путь - единственный. Не создавать JS, а писать его руками. – Novikov

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