如果我能得到过滤工作的客户端或服务器端,我会很高兴,但是将 DataSource 操作和 ServerFiltering(true) 上的发送参数组合在一起会导致空过滤值(文本参数)。
下拉列表是使用级联的系列的一部分。
查看:
@(Html.Kendo().DropDownList()
.Name("name")
.OptionLabel(new SelectListItem { Text = "Select...", Value = "" })
.DataTextField("Text")
.DataValueField("Value")
.Filter("contains")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("Action", "Controller")
.Data("params");
})
.ServerFiltering(true);
})
.Enable(false)
.AutoBind(false)
.CascadeFrom("parent")
)
<script>
function params() {
return {
a: '',
b: 1
};
}
</script>
Controller :
public JsonResult Action(string text, string a, int b)
{
return Json((List<SelectListItem>), JsonRequestBehavior.AllowGet);
}
“文本”应包含过滤器文本。
https://demos.telerik.com/aspnet-mvc/dropdownlist/serverfiltering
最佳答案
我想我明白你在问什么。您希望将下拉列表的当前值作为参数发送到数据源读取事件函数的数据绑定(bind)。
试试这个-->
<script>
function params() {
return {
Text = $("#name").data("kendoDropDownList").text(),
a: '',
b: 1
};
}
</script>
解决方法:
<script>
function params() {
return {
text = null,
a: '',
b: 1
};
}
var filter = $('#name').data('kendoDropDownList').dataSource.filter();
if (filter && filter.filters[0].operator == "contains") {
params.text = filter.filters[0].value;
}
</script>
我让它工作的唯一方法是 Kendo 添加一些默认过滤器,所以我不得不使用一个条件来查找我正在使用的过滤器类型。如果为 null,则不是搜索。
关于javascript - Kendo DropdownList 服务器过滤添加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49674663/