Kendo DropDownList没有填充json字符串列表

时间:2013-09-09 03:02:57

标签: asp.net-mvc json razor kendo-ui kendo-asp.net-mvc

我有两个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>

1 个答案:

答案 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)

来自cascading FAQ:

  

问:The serverFiltering已停用且儿童组合框未停用   工作?

     

答:当serverFiltering被禁用时,组合框将会出现   不向服务器发出任何其他请求。因此它会过滤   使用父级的dataValueField属性的初始数据。如果不   找到物品后,儿童组合框将为空。如果你需要   使用子组合框与禁用服务器过滤,然后你将需要   在客户端提供所有必要的数据。