目前,我将SSRS报告用于需要Excel和PDF导出的客户端。我还使用jQuery multiselect下拉列表作为报表过滤器。例如,第一个列表框/多选框在页面加载时填充。选择后,将根据第一个列表框中的值填充列表框/多选。然后,在第二个列表框中进行选择后,可能会填充第三个。所有这些都是通过jQuery / ajax完成的。
生成SSRS报告时,会回发。随后的客户端列表框(除第一个之外的所有列表框)都不会自动保留其值,因此我将值存储到隐藏字段,然后将它们重新填充到下拉列表中。
这对于少量数据是可以接受的,但我想要一个更好的解决方案(即我希望客户端只保留数据,但我怀疑这是可能的)下拉列表中的大量数据。有时,我们的过滤器可以在多个下拉列表中包含数千个选项。
我在列表框中使用Eric Hynds multiselect,它将在第一个列表框中保留第一个多选项。但是,一旦在其他列表框上使用了ajax,我就不得不在隐藏字段中隐藏它们的选定值,并在回发后将它们重新写回列表框。 (我也尝试使用下拉菜单,但成功率却低得多。)
原始多选(列表框):
$("#lbExample").multiselect
Ajax用于填充它:
$("#lbExample_div").html(msg.d)
用户选择的值保存到后面的代码中的隐藏字段:
hidExample.Value = "values"
生成SSRS报告时发生回发
我检查是否发生了回发,然后点击框重新填充我的多选:
if (isPostBack())
{
for (i = 0; i < array_of_example.length; i++)
{
$("#lbExample").multiselect("widget").find(":checkbox[value='" + array_of_example[i] + "']").each(function ()
{
this.click();
});
}
}
这有效,但我正在寻找更好的方法。有没有其他人遇到这个并克服它而不使用隐藏的字段或类似的东西?任何人都知道为什么多选项在第一个列表框上(没有执行ajax)而不是在后续列表框上进行,但