ユーザーがテーブルの順序を定義できるようにする最良の方法は?
-
22-08-2019 - |
質問
ユーザーがテーブルの順序を定義できるようにする最良の方法は?
SQL Server 2005 と DevExpress コントロールを使用しています。
以下を含むテーブルがあります。
- 工程A
- 工程B
- プロセスC
- レポートA
- レポートB
- レポートC
ユーザーが好きな順序に変更できるようにしたいと考えています。
以下に一例を示します。
- プロセスC
- 工程A
- 工程B
- レポートB
- レポートA
- レポートC
これに対応するために、アプリケーションによって管理されるテーブルに DisplayOrder (INT) フィールドを追加しました。
INT フィールドを使用することは、ユーザー定義の注文に最適なソリューションですか?
これを達成するための他の方法はありますか?
その理由は、現在のアプリケーションでは行を下(または上)に移動するのに約 1 秒かかるからです。なぜこれほど時間がかかるのかを確認するためにコードを解読しようとしています。スタック オーバーフローの達人が何か良いアイデアを持っていれば、そのときに実装するかもしれません。
興味があれば、私たちのアプリケーションで DisplayOrder の編集がどのように可能になるかは次のとおりです。
- テーブルを GridView にロードします
- 行を選択してください
- 「下に移動」ボタンをクリックします (「上に移動」ボタンもあります)
- Click イベントは、現在の行の DisplayOrder をその下の行と交換します。
- 両方のレコードに対する変更がデータベースに書き戻されます。
- これには、クリックごとに約 1 秒かかります (つまり、10 回のクリックは 10 秒に相当します)
解決
クリックするたびに DB を更新しているため、交換ごとに 1 秒かかる可能性がありますか?もしかしたら、データを再度選択し直すこともあるでしょうか?
データをローカル オブジェクトに選択してみてはいかがでしょうか。グリッド内のそれらのオブジェクトにバインドします。オブジェクトを上下に移動するときは、オブジェクトの表示順序プロパティを調整します。その後、DB の更新のみを実行します。
- ユーザーが最後に「保存」をクリックしたとき。
- オブジェクトの値のいずれかが変更された場合。
他のヒント
ユーザーがパフォーマンスの問題を乗り越えるだろうという、ピーター・モリスが示唆するように、彼らの心を変更し、可能性があるので、私は再発注のための明示的な保存ボタンに省の決定を移動します。
を検討するためにさらなるもの - 。トップへ明示的に移動し、下の項目に移動します。
私は、エンタープライズシステムでは、検索可能なアイテムとの報告項目のユーザー主導の選択のためにこの種のアプローチを使用して非常に成功したUIを実装しました。あなたは覚えて、親切にすること(のを見るのUIの詳細はご利用いただけますそれは約15歳です - フラットモノラル日でバック!)。ユーザーテストのロットからの一つの重要な改良 - この順序を保存するためのスイートスポットは、ユーザーごと、または会社が、グループごとのではなかったです。グループは、(大規模連結グラフで本質的に同じルート)同じ開始ページを持っていた一緒に働いている人でした。私たちは、組織内の約7ユニークなグループを持っています。
あなたはユーザー単位またはグループアプローチのために行く場合は、だから、あなたは順序を示す整数へのデータのキーをマッピングして別のテーブルに出てソートデータを取得する必要があります。
あなたの領域は、ユーザーがユーザーIDと彼または彼女が見たいレコードのIDを持つ別のテーブルや表示順序欄にする必要があることを、設定しておきたいことを表示順序の話をした場合。そして、そのページにデータを取得するクエリは、ユーザーの好みのテーブルに参加useaでしょう。
あなただけの人が画面を見ている時間のためtemporaily順序を設定したい場合は、、ユーザーインターフェースthorughそれを行います。
あなたはユーザAがその間inthe一つの設定とユーザーBがdiffernt設定に変更しようとしている望んでレースコンディションに実行されるように、は、ベーステーブル内のレコードを並べ替えていないいずれにせよ、それはお粗末な選択です。