我有两个KendoDropDownList框,第一个加载就好了。第二个级联从第一个开始,应该加载一个简单的数组/字符串列表返回为json。我可以看到GetDistinctImportDates正在返回一个填充的JsonResult,正如我所料。
我错过了什么?
public JsonResult GetDistinctImportDates(string clientid)
{
IEnumerable<string> importDates = null;
var dates = client.GetStringAsync(string.Format("api/ImportHeader/distinctdates/{0}", clientid)).Result;
if (!string.IsNullOrWhiteSpace(dates))
{
importDates = JsonConvert.DeserializeObject<IEnumerable<string>>(dates);
}
return Json(importDates, JsonRequestBehavior.AllowGet);
}
<div id="clientsArea">
@(
Html.Kendo().DropDownList()
.Name("clients")
.OptionLabel("Select Client...")
.DataValueField("ClientId")
.DataTextField("ClientName")
.DataSource(source => {
source.Read(read =>
{
read.Action("GetClients", "Home");
});
})
)
</div>
<div id="datesArea">
@(
Html.Kendo().DropDownList()
.Name("importDates")
.CascadeFrom("clients")
.OptionLabel("Select Import Date...")
.DataSource(source => {
source.Read(read =>
{
read.Action("GetDistinctImportDates", "Home")
.Data("filterImportDates");
});
})
.AutoBind(false)
.Enable(false)
)
</div>
答案 0 :(得分:2)
您需要在子项下拉列表的数据源上启用ServerFiltering
才能使其正常工作:
Html.Kendo().DropDownList()
.Name("importDates")
.CascadeFrom("clients")
.OptionLabel("Select Import Date...")
.DataSource(source => {
source.Read(read =>
{
read.Action("GetDistinctImportDates", "Home")
.Data("filterImportDates");
}).ServerFiltering(true);
})
.AutoBind(false)
.Enable(false)
问:
The serverFiltering
已停用且儿童组合框未停用 工作?答:当
serverFiltering
被禁用时,组合框将会出现 不向服务器发出任何其他请求。因此它会过滤 使用父级的dataValueField属性的初始数据。如果不 找到物品后,儿童组合框将为空。如果你需要 使用子组合框与禁用服务器过滤,然后你将需要 在客户端提供所有必要的数据。