1

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

1 回答 1

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被禁用且子组合框不起作用?

A:当serverFiltering禁用时,组合框不会向服务器发出任何额外的请求。因此,它将使用父级的 dataValueField 属性过滤初始数据。如果未找到任何项目,则子组合框将为空。如果您需要使用禁用服务器过滤的子组合框,那么您需要在客户端上提供所有必要的数据。

于 2013-09-09T19:12:37.393 回答