目前,我为需要 Excel 和 PDF 导出的客户使用 SSRS 报告。我还使用 jQuery 多选下拉菜单作为报告过滤器。例如,第一个列表框/多选在页面加载时填充。选择后,将根据第一个列表框中的值填充列表框/多选。然后在第二个列表框中进行选择后,可能会填充第三个。所有这些都是用 jQuery/ajax 完成的。
生成 SSRS 报告时,它会回发。随后的客户端列表框(除第一个之外的所有列表框)将不会自动保留其值,因此我将值存储到隐藏字段,然后将它们重新填充到下拉列表中。
这对于少量数据是可以的,但我想要一个更好的解决方案(即我希望客户端只保留数据,但我怀疑这是可能的)对于下拉列表中的大量数据。有时,我们的过滤器可以包含多个下拉列表中的数千个选项。
我在列表框上使用 Eric Hynds 多选,它会在第一个列表框中保留第一个多选选项。但是,一旦在其他列表框上使用了 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)而不是后续列表框?