現在、私はすぐに利用できる Excel と PDF のエクスポートを必要とするクライアントに SSRS レポートを使用しています。また、jQuery の複数選択ドロップダウンをレポート フィルターとして使用しています。たとえば、最初のリストボックス/複数選択は、ページの読み込み時に読み込まれます。選択すると、最初のリストボックスの値に基づいてリストボックス/複数選択が設定されます。次に、2 番目のリスト ボックスで選択を行った後、3 番目のリスト ボックスにデータが入力される場合があります。これらはすべて 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 が実行されていない) では保持されているが、後続のリストボックスでは保持されていない理由を知っている人はいますか?