質問

ユーザーがテーブルの順序を定義できるようにする最良の方法は?

SQL Server 2005 と DevExpress コントロールを使用しています。

以下を含むテーブルがあります。

  1. 工程A
  2. 工程B
  3. プロセスC
  4. レポートA
  5. レポートB
  6. レポートC

ユーザーが好きな順序に変更できるようにしたいと考えています。

以下に一例を示します。

  1. プロセスC
  2. 工程A
  3. 工程B
  4. レポートB
  5. レポートA
  6. レポートC

これに対応するために、アプリケーションによって管理されるテーブルに DisplayOrder (INT) フィールドを追加しました。

INT フィールドを使用することは、ユーザー定義の注文に最適なソリューションですか?

これを達成するための他の方法はありますか?

その理由は、現在のアプリケーションでは行を下(または上)に移動するのに約 1 秒かかるからです。なぜこれほど時間がかかるのかを確認するためにコードを解読しようとしています。スタック オーバーフローの達人が何か良いアイデアを持っていれば、そのときに実装するかもしれません。

興味があれば、私たちのアプリケーションで DisplayOrder の編集がどのように可能になるかは次のとおりです。

  1. テーブルを GridView にロードします
  2. 行を選択してください
  3. 「下に移動」ボタンをクリックします (「上に移動」ボタンもあります)
  4. Click イベントは、現在の行の DisplayOrder をその下の行と交換します。
  5. 両方のレコードに対する変更がデータベースに書き戻されます。
  6. これには、クリックごとに約 1 秒かかります (つまり、10 回のクリックは 10 秒に相当します)
役に立ちましたか?

解決

クリックするたびに DB を更新しているため、交換ごとに 1 秒かかる可能性がありますか?もしかしたら、データを再度選択し直すこともあるでしょうか?

データをローカル オブジェクトに選択してみてはいかがでしょうか。グリッド内のそれらのオブジェクトにバインドします。オブジェクトを上下に移動するときは、オブジェクトの表示順序プロパティを調整します。その後、DB の更新のみを実行します。

  1. ユーザーが最後に「保存」をクリックしたとき。
  2. オブジェクトの値のいずれかが変更された場合。

他のヒント

ユーザーがパフォーマンスの問題を乗り越えるだろうという、ピーター・モリスが示唆するように、彼らの心を変更し、可能性があるので、私は再発注のための明示的な保存ボタンに省の決定を移動します。

を検討するためにさらなるもの - 。トップへ明示的に移動し、下の項目に移動します。

私は、エンタープライズシステムでは、検索可能なアイテムとの報告項目のユーザー主導の選択のためにこの種のアプローチを使用して非常に成功したUIを実装しました。あなたは覚えて、親切にすること(のを見るのUIの詳細はご利用いただけますそれは約15歳です - フラットモノラル日でバック!)。ユーザーテストのロットからの一つの重要な改良 - この順序を保存するためのスイートスポットは、ユーザーごと、または会社が、グループごとのではなかったです。グループは、(大規模連結グラフで本質的に同じルート)同じ開始ページを持っていた一緒に働いている人でした。私たちは、組織内の約7ユニークなグループを持っています。

あなたはユーザー単位またはグループアプローチのために行く場合は、

だから、あなたは順序を示す整数へのデータのキーをマッピングして別のテーブルに出てソートデータを取得する必要があります。

あなたの領域は、ユーザーがユーザーIDと彼または彼女が見たいレコードのIDを持つ別のテーブルや表示順序欄にする必要があることを、設定しておきたいことを表示順序の話をした場合。そして、そのページにデータを取得するクエリは、ユーザーの好みのテーブルに参加useaでしょう。

あなただけの人が画面を見ている時間のためtemporaily順序を設定したい場合は、

、ユーザーインターフェースthorughそれを行います。

あなたはユーザAがその間inthe一つの設定とユーザーBがdiffernt設定に変更しようとしている望んでレースコンディションに実行されるように、

は、ベーステーブル内のレコードを並べ替えていないいずれにせよ、それはお粗末な選択です。

scroll top