1

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

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 秒に相当します)。
4

3 に答える 3

1

クリックするたびにDBを更新するため、交換ごとに1秒かかる可能性がありますか?たぶん、データを再度選択することさえありますか?

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

  1. ユーザーが最後に[保存]をクリックしたとき。
  2. オブジェクトの値のいずれかが変更された場合。
于 2009-02-08T12:56:57.323 に答える
1

ユーザーが気が変わって、Peter Morrisが示唆しているように、パフォーマンスの問題を乗り越える可能性があるため、保存の決定を明示的な[保存]ボタンに移動して並べ替えます。

さらに考慮すべき事項-明示的な[上に移動]および[下に移動]アイテム。

エンタープライズシステムで、ユーザー主導で検索可能なアイテムとレポートアイテムを選択するために、この種のアプローチを使用して非常に成功したUIを実装しました。UIの詳細を確認できます(親切にしてください。15年ほど前のことを覚えておいてください。フラットなモノの時代に戻ってきました!)。多くのユーザーテストからの1つの重要な改良点-この注文を保存するためのスイートスポットは、ユーザーごとまたは会社ごとではなく、グループごとでした。グループは、同じ開始ページ(大規模に接続されたグラフの基本的に同じルート)を持つ一緒に作業している人々でした。組織には約7つのユニークなグループがありました。

したがって、ユーザーごとまたはグループごとのアプローチを選択する場合は、データキーを序数の整数にマップする別のテーブルに並べ替えデータを引き出す必要があります。

于 2009-02-08T13:12:09.603 に答える
0

ユーザーが設定して保持したい表示順序について話している場合は、ユーザーIDとユーザーが表示したいレコードのID、および表示順序の列を含む別のテーブルに配置する必要があります。次に、そのページへのデータを取得するクエリは、ユーザー設定テーブルへの結合を使用します。

ユーザーが画面を見ている時間の順序を一時的に設定したい場合は、ユーザーインターフェイスを介して行います。

いずれにしても、ベーステーブルのレコードを並べ替えないでください。これは、ユーザーaが1つの設定を必要とし、その間にユーザーbが別の設定に変更しようとする競合状態に遭遇するためです。

于 2009-02-09T16:04:46.230 に答える