0

使用服务器端过滤,我想用一个由多个属性组成的对象响应来自 kendo MultiSelect 小部件的每个请求,其中一个是要在下拉列表中枚举的数据项。

看起来我需要指定schema.data。但我还没有弄清楚如何使用 MVC 包装器指定schema.data 。这是可能的还是有其他方法可以做到这一点?

这是我的自定义 MultiSelectBuilder 代码:

MultiSelectBuilder BuildSelector(HubAssemblyFieldEnums.FilterFields field, string placeHolder, string dataValueField, string dataTextField = default(string), string itemTemplate = default(string), string tagTemplate = default(string)) {
    var name = System.Enum.GetName(typeof(HubAssemblyFieldEnums.FilterFields), field);
    var multiSelect = Html.Kendo().MultiSelect()
                    .Name(name)
                    .Placeholder(placeHolder)
                    .HighlightFirst(true)
                    .Filter(FilterType.Contains)
                    .AutoBind(false)
                    .DataSource(_ => _.Read(read => {
                        read.Action("getFilterValues", "api/hubassembly")
                            .Type(HttpVerbs.Post)
                            .Data("function(e) { return getFilters(e, filterEnum." + name + "); }");
                    })
                    .ServerFiltering(true));

    if (dataValueField != default(string)) { multiSelect.DataValueField(dataValueField); }
    if (dataTextField != default(string)) { multiSelect.DataTextField(dataTextField); }
    if (itemTemplate != default(string)) { multiSelect.ItemTemplate(itemTemplate); }
    if (tagTemplate != default(string)) { multiSelect.TagTemplate(tagTemplate); }
    return multiSelect;
}

谢谢!

4

1 回答 1

0

来自 Telerik 技术支持,

一般来说,MultiSelect MVC 包装器不支持这一点,它的 dataSource 总是需要一个集合,但可以通过覆盖 reader.data 函数来实现,例如

multiselect.dataSource.reader.data = function (data) { return data.values};
于 2013-08-23T17:02:07.850 回答