Kendo ui 带有编辑器模板kendo grid mvc的级联下拉菜单
我试图用编辑器模板实现一个级联列表我不确定kendo是否支持它,我在编辑移动时有一个网格我试图根据编辑器模板中的选择数据过滤数据库 网格显示用户可以工作的可用时间 e、 g列Timefrom、TimeTo、status可以是 1)可用性 2.)不可用 3)假期 与假日和不可用相比,可用性具有不同的时间模板 e、 g “早/日”-07.00-18.00 “漫长的一天”-0700-22.30 “迟到”-12.00-22.00 “晚上”-19.00-21.00 《暮光之城》18.00-04.00 假日/不可用-半天上午 假日/不可用-半天下午 假日/不可用-晚上 假日/不可用-全天 当用户点击编辑模式时,我想要实现的是,在选择选项Availability time template(可用性时间模板)后,status(状态)列中有一个带有[Availability-Unailability-Holiday]的下拉列表,该选项将与相应的时间模板一起启用 示例:当用户在编辑模式下单击假日下拉列表时,只有这些选项应显示在可用时间模板列(“早/日”、“长日”、“晚”、“夜”、“黄昏”) 下面是一个与主应用程序相似的演示代码,谢谢 主页Kendo ui 带有编辑器模板kendo grid mvc的级联下拉菜单,kendo-ui,kendo-grid,kendo-asp.net-mvc,kendo-treeview,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,Kendo Treeview,我试图用编辑器模板实现一个级联列表我不确定kendo是否支持它,我在编辑移动时有一个网格我试图根据编辑器模板中的选择数据过滤数据库 网格显示用户可以工作的可用时间 e、 g列Timefrom、TimeTo、status可以是 1)可用性 2.)不可用 3)假期 与假日和不可用相比,可用性具有不同的时间模板 e、 g “早/日”-07.00-18.00 “漫长的一天”-0700-22.30 “迟到”-12.00-22.00 “晚上”-19.00-21.00 《暮光之城》18.00-04.00 假日
@(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("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
}
正如你的评论进一步解释的那样,这是你需要改变的 时间模板
@(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")
)
那么,有什么问题?它能工作吗?它能工作,时间模板的下拉列表(AvailabilityTimeTemplate)是禁用的。我在网上找不到任何资源。你看到时间模板下拉列表了吗?
。启用(false)
,这使它被禁用。我可以看到时间模板,但它是禁用的。确实,你需要删除这个。启用(false)
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));
}
@(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")
)