2009-08-06 10 views
1

現在、ページング、フィルタリング、ソートできるデータのテーブル(グリッド)があります。テーブルには、チェックボックスの列も組み込まれています。現在、ページング、フィルタリング、ソートはSQLクエリ内で行われます。私ができるようにしたいのは、私のチェックボックスの列のクリックされた項目で並べ替えることです。これにより、チェックされているすべてのアイテムがテーブルの前面に表示されます。チェックボックス自体はすべてクライアント側であるため、存在しない列でソートするようSQLクエリに指示することはできません(動的に作成する必要があるかもしれません)。最初に指定したデータで 'order by' SQL句を使用してデータをソートするには

本質的には、チェックされたボックスID値は、SQLクエリ自体が何らかの形でそれが最初にソートされることを知った後、指定された他のものによってソートされるクエリに送られる。 (ID IN(1,2,3)何とかからIDを選択)BY何とか ORDER FROM

SELECT *、AnotherColumnToSort

1、2、および3がクリックされた何かのように、とにかくそれは計画です、誰も実際にそれを達成する方法についてのアイデアはありますか?

更新:Smack私は思ったように、私はOracle DB上でSQL Serverではないです。

SELECT * 
FROM Blah 
ORDER BY Checked DESC, AnotherColumnToSort 

あなたがしたくない(またはすることはできません)行かどうかを保存する場合は、次の行が最初にそのフィールドによって、0そうでない場合は、その後、順番にチェックされている場合

答えて

5

1BITフィールドを設定します。表でチェックされ、CASE句を使用して、それを導き出す:私は避けるだろう

SELECT * 
FROM Blah 
ORDER BY 
    CASE 
    WHEN ID IN (1, 2, 3) THEN 1 
    ELSE 0 
    END DESC, 
    AnotherColumnToSort 
+0

私はあなたが何かをしていると思います。私はこれを試してみましょう。私の考えは、UNIONとREMOVEを持つ2つの重複したクエリを含んでいました。 – rball

+0

クラップス、私は、SQL ServerではなくOracle DBで作業していることを思い出しました。私はこの考え方はまだ正しいと思うが、構文については分からない。 – rball

+0

これは、OracleのCASEが本当に似ているようです。ピー! – rball

1

再照会データをすでに持っている - うまくスケールするつもりはない、あなたはそれだけで問題が発生します。このタイプの機能は、多くのサードパーティ製のグリッドで利用できます(私はすべての有料グリッドの近くでこれがあると思います)。

+0

私がやっていることは、100万人のうち1〜10人のレコードしか取得していないことです。次のページに移動したり、そのデータをフィルタリングするには、データを再クエリする必要があります。別の質問のようですが、どうすれば回避できますか? – rball

+0

ちょうどメモとして、私の現在の方法はかなりよく働いています。真に多くのデータベースのヒット数(最終的にキャッシングを考えていた)が、ページの読み込み時間が20分から1秒に落ちました。 – rball

+0

サードパーティ製のコントロールの機能に驚くかもしれません。彼らは高価かもしれませんが、あなたの時間は貴重であり、彼らはあなたをたくさん救うことができます。 .Netデベロッパーの方は、http://www.telerik.com/products/aspnet-ajax/grid.aspxをご覧ください。 –

関連する問題