使用服务器端过滤,我想响应来自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;
}
谢谢!
答案 0 :(得分:0)
来自Telerik技术支持,
一般来说,MultiSelect MVC不支持此功能 包装器及其dataSource总是需要一个集合,但可以 通过覆盖reader.data函数来实现,例如
multiselect.dataSource.reader.data = function (data) { return data.values};