2012-02-29 3 views
2

C#でサポートされているASP.NETサイトを取得しました。これは、仮想マシンがどの物理サーバに搭載されているかを示す内部ページです。リストはかなり長いので、ユーザーがテキストボックスに入力するときにリストを絞り込むことができます。たとえば、「texas」、「newyork」、「nevada」という3つのサーバーがあるとします。ユーザが指定されたテキストボックスに文字「n」を入力すると、リストは(好ましくはクライアント側、ポストバックなしで)リストからテキサスを除去する。さらに、ユーザーが「nev」と入力すると、newyorkも除外され、「nevada」だけが残されます。テキスト入力経由でGridViewをオンザフライでフィルタリングする方法はありますか?

この種の機能は、デフォルトのGridViewには存在しません。少なくとも、私はとにかくそれについて何かを見つけることができません、Webフォームのためではありません。

内部的なサイトで、ページはたぶん週に数回のように使用されるため、テキスト入力にポストバックしてスローします部分的に入力された文字列をデータベースに対して返し、返された結果に基づいてテーブルを再バインドします。だから私たちは "nev"と入力した時点で、3回のポストバックと3回のデータベースクエリを行いました。私はかなり簡単に解くことができると確信しています。そして、基本的にはセキュリティの必要がない、一握りの人だけが使う完全なイントラネットサイトなので、意図的にキーボードを叩くだけで心配する必要はありませんサーバーを10億回呼び出す必要があります。実際のオープンワールドのシナリオでは、それは恐ろしいアイデアだと私は認識していますが、私たちのニーズに対しては、それは問題ではありません。

GridView以外のものであっても、同じ効果を達成するのに役立つあらゆる種類のソリューションには公開されています。

答えて

1

Rx(Reactive Extensions)でこれを行う例を紹介しました。 .Throttle()を使用して、すべてのキーを押すたびに投稿されないようにします。だから、たいてい毎秒またはそれほど頻繁にアップデートするように調整することができます。完全な例は、このPDFチュートリアルの18ページのエクササイズ5、http://go.microsoft.com/fwlink/?LinkId=208528です。 (Rx home page

ここではコピーして貼り付けるのは大変ですが、このチュートリアルには完全な例があります。その要点は、各キープレスが「シーケンス」として処理されることです。シーケンス内の各アイテムは、イベントによって処理されます。あなたのケースでは、各変更で実行されるアクションは、テキストボックスの現在の値に基づいてGridViewをフィルタリングすることになります(また、Throttle()は速いタイプのユーザーが頻繁に頻繁に更新しないようにする鍵になります)

この状況でAJAX.NETを使用してよりスムーズなUIを作成するたびにポストバックすることができます.AJAXは新しいデータなどを取得するためにサーバーにポストバックできますが、ユーザーのページ全体を更新する必要はありません。

編集:ajax.netのミニポストバックが十分に速くない場合、rxはクライアント側で動作しますが、サイドのjavascriptも同様です。http://channel9.msdn.com/Blogs/Charles/Introducing-RxJS-Reactive-Extensions-for-JavaScript

+0

優秀、ありがとうございました。 – CptSupermrkt

0

あなたの代替音は私に行く方法のように聞こえる。すべての変更のクエリの代わりにMabyクエリを送信し、グリッドビューを更新するための少しリフレッシュボタンがあります。そのちょうどバックエンドの場合、私はそれが問題であるとは思わない。

申し訳ありませんもっと助けませんでした。

関連する問題