You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:55:53