1

私は、ユーザーがデータをフィルタリングしてから、選択範囲をpdfまたはExcelにエクスポートできるWebページを開発しています。WebサイトはASP.NETC#を使用しています。

データをフィルタリングするために、ボックスとドロップダウンのある左側の列を含むWebページを作成しました。これにより、ユーザーは検索条件を入力して、検索ボタンをクリックできます。これは、多くのWebサイトに含まれている典型的な検索/フィルター機能です。データをフィルタリングした後、選択はaspリストビューを使用して表示されます。このリストビューはテーブルを生成します。Dragtableを実装して、ユーザーがこのテーブルの列の順序を変更できるようにし、columnManagerを使用して、表示する列を選択できるようにしました。

したがって、私の問題は、フィルター/検索機能がasp .net C#を使用してバックエンドで解決されるのに対し、列の選択と再配置はjQueryを使用してクライアント側で行われることです。ユーザーが「エクスポート」ボタンをクリックしたら、jQueryによって実行されるフィルターに加えて、aspコントロールによって実行されるフィルターを収集し、ファイルを作成したいと思います。このファイルには、dragtableを使用して変更した後と同じ順序で、columnManagerを使用して選択した列のみを含める必要があります。

サーバー側フィルターとクライアント側フィルターの両方を使用する場合のベストプラクティスは何ですか?また、サーバー側のフィルタリングをすべて削除し、ajax.post()のみを使用してすべてのフィルターをJSON形式でサーバーに送信することも検討しました。また、ユーザーが現在のフィルターを別の時間保存できるようにしたいと思います。

アップデート

サーバー側を削除し、ajax(より正確にはgetJSON)を使用して検索結果を取得することにしました。このようにして、ポストバックで行うjQuery / jsで行われる列の順序付けと並べ替えを失うことはありません(もちろん、Cookieなどを使用できます)。また、すべてのロジックを1か所にまとめており、JSONオブジェクトはサーバー側で簡単にラップ/アンラップできます。しかし、あなたの答えをありがとう!

4

2 に答える 2

0

あなたのアプローチには別の問題があります。ユーザーが最初に列を注文し、それをフィルタリングするとどうなりますか?列の順序がリセットされます。

ただし、jquery uiドラッグ可能を使用すると、ajax呼び出しを起動して、サーバー側のコードに変更を通知できます。関数を停止イベントにバインドできます:http://api.jqueryui.com/draggable/#event-stop

だから私は次のことをします:

  • ユーザーが列の順序を変更したときにajax呼び出しを起動しますが、データは更新しません
  • ユーザーがフィルターを追加してデータを更新すると、ajax呼び出しが発生します

サーバー側のコードは常に最新であり、必要に応じて正しい出力をレンダリングします。

于 2012-10-30T10:27:28.733 に答える
0

クライアント側とサーバー側が同じ場所で動作することは、まったく悪いことではありません。世界中で実行されているすべての優れたアプリケーションは、これらの組み合わせを組み合わせています。

ただし、アプローチを確認する必要があります。

ポストバックが必要ない場合は、Jquery を使用することをお勧めします。

ラウンドトリップに問題がなければ、サーバー サイドと Ajax に進みます。

于 2012-10-26T10:20:58.187 に答える