【问题标题】:Cascading drop down menu with editor template kendo grid mvc带有编辑器模板剑道网格 mvc 的级联下拉菜单
【发布时间】:2015-05-12 14:42:57
【问题描述】:

我尝试使用编辑器模板实现级联列表我不确定剑道是否支持它,我在编辑移动时有一个网格我试图根据编辑器模板中的选择数据过滤数据库

网格显示用户可以工作的可用时间 例如,Timefrom、TimeTo、status 列可能如下

1.) 可用性 2.) 不可用 3.) 假期

availablity 与 Holiday 和 unavailable 相比有不同的时间模板

例如 “早/天” - 07.00 -18.00 “漫长的一天” - 0700 - 22.30 “迟到” - 12.00 - 22.00 “夜晚” - 19.00 - 21.00 “暮光之城” - 18.00 - 04.00

假期/不可用 - 半天早上 假期/不可用 - 半天下午 假期/不可用 - 晚上 假期/不可用 - 全天

当用户单击编辑模式时我想要实现的目标,在选择选项可用性时间模板后,状态列有一个下拉菜单,其中 [Availablity - Unavilablity - Holiday ] 将使用相应的时间模板启用。

例如,当用户在编辑模式下单击“假期”下拉菜单时,只有这些选项应显示在可用时间模板列上(“早/天”、“长天”、“晚”、“夜晚”、“暮光之城”)

以下是与主应用程序类似概念的演示代码谢谢

主页

@(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));
    }

【问题讨论】:

  • 那么,有什么问题吗?有用吗?
  • 它确实有效,时间模板 (AvailablityTimeTemplate) 的下拉菜单已禁用,我无法在线找到任何资源
  • 你看到时间模板下拉.Enable(false),使它被禁用..
  • 我可以看到时间模板,但它禁用了
  • 确实,你需要删除这个.Enable(false)

标签: kendo-ui kendo-grid kendo-asp.net-mvc kendo-treeview


【解决方案1】:

正如您的评论进一步解释的那样,这是您需要更改的内容

时间模板

@(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")
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多