Kendo Grid Read()传递额外参数:多外部过滤按钮参数传递
我来帮你搞定这个问题!其实要传递多个额外参数很简单,只需要调整你的additionalData函数,让它同时返回两个文本框的值就行,下面是具体的步骤和代码示例:
1. 修改additionalData函数,返回多个参数
不管你是把additionalData直接绑定到read的data属性,还是通过parameterMap来处理,只需要让这个函数返回包含两个文本框值的对象即可。
假设你的两个文本框ID分别是#txtFilter1和#txtFilter2,修改后的函数如下:
function additionalData() { return { // 获取第一个文本框的值 filterParam1: $("#txtFilter1").val(), // 获取第二个文本框的值 filterParam2: $("#txtFilter2").val() }; }
2. 确保按钮点击触发网格重新读取
不管点击哪个过滤按钮,都需要调用Kendo Grid的dataSource.read()方法,这样新的参数才会被传递到后端:
// 第一个过滤按钮的点击事件 $("#btnFilter1").click(function() { $("#yourGridId").data("kendoGrid").dataSource.read(); }); // 第二个过滤按钮的点击事件 $("#btnFilter2").click(function() { $("#yourGridId").data("kendoGrid").dataSource.read(); });
3. 后端接收多个参数
以ASP.NET MVC为例,你的Read方法需要同时接收这两个参数,用来做对应的过滤逻辑:
public ActionResult Read([DataSourceRequest] DataSourceRequest request, string filterParam1, string filterParam2) { // 这里根据两个参数组合过滤条件 var filteredData = YourDataRepository.GetFilteredData(filterParam1, filterParam2); return Json(filteredData.ToDataSourceResult(request)); }
补充说明
如果你的Grid配置里是用parameterMap来处理参数,只需要把additionalData返回的对象和默认请求参数合并即可:
dataSource: { transport: { read: { url: "/YourController/Read", type: "POST", dataType: "json" }, parameterMap: function(data, type) { if (type === "read") { // 合并默认参数和额外参数 return $.extend({}, data, additionalData()); } return data; } }, // 其他Grid配置... }
这样不管点击哪个按钮,两个文本框的当前值都会被一起传递到后端,你就可以根据需要组合过滤条件啦!
内容的提问来源于stack exchange,提问作者Beginer
相关产品推荐
相关产品推荐

