2015-05-12 3 views
2

Я пытаюсь реализовать каскадный список вниз с шаблоном редактора. Я не уверен, поддерживает ли кендо его, у меня есть сетка при редактировании перемещения. Я пытаюсь фильтровать базу данных при выборе данные из шаблона редактораКаскадное выпадающее меню с шаблоном редактора kendo grid mvc

сетки показывает время пользователь за доступностью может работать например, столбец Timefrom, TimeTo, статус, могут быть следующие

1.) 2. за доступностью) Unavailablity 3.) Праздник

доступность есть diff шаблон времени различны по сравнению с Праздника и unavailablity

например "Ранний/день" - 07,00 -18,00 "Длинный день" - 0700 - 22,30 "Late" - 12,00 - 22,00 "Ночной" - 19.00 - 21.00 " Сумерки»- 18,00 - 04,00

отдыха/Unavailablity - полдня утром праздник/Unavailablity - полдня после обеда праздник/Unavailablity - вечер праздник/Unavailablity - целый день

, что я хочу для того чтобы достигнуть когда пользователь нажимаетв режиме редактирования столбец статуса имеет выпадающее меню с [Доступность - Unavilablity - Holiday] после выбора шаблона времени доступности выбора будет включаться с соответствующим шаблоном времени.

пример, когда пользователь нажимает кнопку «Отдых» в режиме редактирования, этот параметр должен отображаться на столбце «Время» («Ранний/День», «Длинный день», «Поздний», «Ночной», «Сумерки»)

ниже представлен демонстрационный код simmilar концепция основных приложений Благодаря

главную

@(Html.Kendo().Grid<Availablity>() 
.Name("grid-availablity") 
.Columns(columns => 
{ 
    columns.Bound(c => c.Id); 
    columns.Bound(c => c.TimeFrom); 
    columns.Bound(c => c.TimeTo); 
    columns.Bound(c => c.Status); 
    columns.Bound(c => c.AvailablityTimeTemplate); // only testing purpose 

    columns.Command(command => 
    { 
     command.Edit(); 
    }); 
}) 
.DataSource(databinding => databinding.Ajax().PageSize(10).ServerOperation(false) 
    .Model(model => model.Id(availablity => availablity.Id)) 
    .Read("GetAvailablityList","Availability") 
    .Update("Availablity_Update","Availability") 
) 

) 

<script> 
function filterTimeTemplate() { 

return { 
    AvailablityTimeTemplate: $("#AvailablityTimeTemplate").val() 
    }; 
} 

</script> 

Редактор шаблонов

Статус шаблона

@(Html.Kendo().DropDownList() 
.Name("Status") 
//.DataTextField("") 
//.DataValueField("Id") 
.OptionLabel("Change Status") 
.BindTo(Enum.GetNames(typeof(Status)).ToList()) 
) 

Время шаблона

@(Html.Kendo().DropDownList() 
    .Name("AvailablityTimeTemplate") 
    .HtmlAttributes(new { style = "width:300px" }) 
    .OptionLabel("Change Time...") 
     //.DataTextField("") 
     // .DataValueField("") 
     .DataSource(source => 
     { 
      source.Read(read => 
      { 
       read.Action("GetCascadingData", "Availability") 
         .Data("filterTimeTemplate"); 
      }) 
       .ServerFiltering(true); 
     }) 
    .Enable(false) 
    .AutoBind(false) 
    .CascadeFrom("Status") 
) 

классы и перечисления

public class Availablity 
{ 
    public string Id { get; set; } 
    public string TimeFrom { get; set; } 
    public string TimeTo { get; set; } 

    [UIHint("AvailablityStatus")] 
    public Status Status { get; set; } 

    [UIHint("TimeTemplate")] 
    public string AvailablityTimeTemplate { get; set; } 

    public List<Availablity> GetAvailablity() 
    { 
     return new List<Availablity>() 
     { 
      new Availablity(){ Id="001", TimeFrom="0700", TimeTo="18.00", Status=Status.Available}, 
      new Availablity(){ Id="002", TimeFrom="0700", TimeTo="23.30", Status=Status.Available}, 
      new Availablity(){ Id="002", TimeFrom="12.00", TimeTo="22.00", Status=Status.Available} 
     }; 
    } 

    public List<string> GetTimeTemplateList(Status status) 
    { 
     List<string> TimeTemplateCollection = null; 
     if (status == Status.Available) { 
      TimeTemplateCollection = new List<string>(){ 
       "Long day","Late","Night","Twilight" 
      }; 
     } else { 
      TimeTemplateCollection = new List<string>(){ 
       "Morning Half Day","Afternoon - Half Day ","Night","Whole Day" 
      }; 
     } 

     return TimeTemplateCollection; 
    } 
} 

public enum Status 
{ 
    Available = 0, 
    UnAvailable = 1, 
    Holiday = 2 
} 

контроллер

public JsonResult GetCascadingData(Status availablityStatus) 
    { 
     var availablity = new Availablity(); 
     var data = availablity.GetTimeTemplateList(availablityStatus); 
     return Json(data, JsonRequestBehavior.AllowGet); 
    } 

    public JsonResult GetAvailablityList([DataSourceRequest] DataSourceRequest request) 
    { 
     var availablity = new Availablity(); 
     var data = availablity.GetAvailablity(); 
     return Json(data.AsQueryable().ToDataSourceResult(request)); 
    } 
+0

так, Что проблема? Это работает? –

+0

он работает, выпадающий шаблон времени (AvailablityTimeTemplate) отключен, я не смог найти какие-либо ресурсы в сети. – Kachou

+0

Вы видите в раскрывающемся списке шаблонов времен. '.Enable (false)', которые делают его отключенным .. –

ответ

0

Как ваш комментарий объяснить далее, это то, что вам нужно изменить

времени шаблона

@(Html.Kendo().DropDownList() 
    .Name("AvailablityTimeTemplate") 
    .HtmlAttributes(new { style = "width:300px" }) 
    .OptionLabel("Change Time...") 
    .DataSource(source => 
    { 
     source.Read(read => 
     { 
      read.Action("GetCascadingData", "Availability").Data("filterTimeTemplate"); 
     }) 
     .ServerFiltering(true); 
    }) 
    //.Enable(false) should be removed 
    .AutoBind(false) 
    .CascadeFrom("Status") 
) 
+0

, благодаря которому работает – Kachou

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