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

如何在SSRS报表中添加搜索框,实现双数据集实时无按钮过滤?

嘿,这个需求我之前帮同事实现过,核心就是结合SSRS参数的灵活性和一点前端脚本,绕过默认的「查看报表」按钮,同时让两个数据集跟着输入实时更新。下面是一步步的实操方法:

实现步骤

1. 创建无交互提示的文本参数

首先在报表里新增一个文本类型的参数,命名为SearchText(名字随便取,后面脚本对应上就行),关键设置要注意:

  • 勾选「允许空值」「允许空白值」——这样初始状态能显示所有数据
  • 必须取消勾选「提示用户输入」——我们不用SSRS自带的参数面板,要自己做搜索框

2. 给两个数据集加过滤规则

针对你要过滤的两个数据集(比如DataSetA和DataSetB),有两种方式加过滤:

方式一:SQL查询里直接加条件(推荐,性能更好)

在数据集的SQL语句末尾加上WHERE子句:

WHERE YourTargetColumn LIKE '%' + @SearchText + '%'

把YourTargetColumn换成你要搜索的字段(比如订单号、客户编码),@SearchText就是我们刚才创建的参数。

方式二:用SSRS数据集过滤器

如果不想改SQL,也可以在数据集的「过滤器」选项卡添加规则:

  • 字段:选你要搜索的列
  • 运算符:选Like
  • 值:输入="%" & Parameters!SearchText.Value & "%"

两种方式都能实现模糊匹配,输入的内容会自动套在百分号中间,匹配包含该文本的记录。

3. 添加自定义搜索框+实时刷新脚本

接下来要在报表里加一个自定义的搜索输入框,推荐放在报表页眉(这样翻页也能看到):

  1. 插入一个文本框,右键选择「占位符属性」
  2. 把「值」的类型改成「HTML - 标记类型」
  3. 在值里输入这段HTML:
<input type="text" id="customSearchBox" placeholder="输入关键词实时过滤..." onkeyup="triggerRefresh()" />

然后要加一段JavaScript来监听输入,自动刷新报表:
你可以把脚本放在同一个文本框的HTML里(加在input标签后面),或者在报表的「页面加载事件」里添加:

function triggerRefresh() {
    // 获取输入框的内容
    var inputVal = document.getElementById('customSearchBox').value;
    // 找到SSRS报表容器(ID可能是ReportViewer1,自己用浏览器开发者工具确认下)
    var reportViewer = document.getElementById('ReportViewer1');
    if (reportViewer) {
        // 设置参数值
        reportViewer.SetParameters([{ Name: 'SearchText', Value: inputVal }]);
        // 触发报表刷新,不用点按钮
        reportViewer.RefreshReport();
    }
}

注意:报表容器的ID在不同环境可能不一样,比如Visual Studio预览里是ReportViewer1,部署到服务器上可能是ReportViewerControl,用浏览器F12查看元素就能找到。

4. 隐藏默认的参数面板和「查看报表」按钮

最后把SSRS自带的参数面板和按钮藏起来:

  • 打开报表属性,找到「参数面板可见性」,设置为「隐藏」
  • 如果还有残留的「查看报表」按钮,用CSS隐藏,同样放在刚才的HTML文本框里:
<style>
    /* 替换成你实际的按钮元素选择器,用F12找 */
    #ReportViewer1_ctl04_ctl00 {
        display: none !important;
    }
</style>

一些注意点

  • 实时刷新会频繁请求服务器,如果数据集很大,建议加分页或者限制返回行数,避免卡顿
  • 部署到服务器前,先在Visual Studio里测试,设计器的脚本支持和服务器端可能有小差异
  • 如果企业环境禁用了自定义脚本,这个方法可能用不了,得跟IT确认下权限

内容的提问来源于stack exchange,提问作者Flat_Cap_Hat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:16:04