0

カテゴリのリストを含むグリッドビューがあります。データベース (MSSQL2008) では、カテゴリ テーブルに SortOrder(INT) NULL フィールドがあります。

現在、カテゴリは次を使用して取得されます。

Galleries.DataSource = From G In DB.GalleryCategories Order By G.SortOrder, G.Name

今、私ができるようにする必要があるのは、ユーザーが任意の方法で項目を並べ替えることができるように、各行に「上に移動」ボタンと「下に移動」ボタンを追加することです。

私の最初の考えは次のようなものです: 選択したアイテムの ID を識別します。選択したアイテムの前後のアイテムの ID を識別します。DB SortOrders で特定されたアイテムの交換。

次に、並べ替え順をNOT NULLにして、一意の番号に初期化されていることを確認します

このアプローチに関する別の提案/コメントをいただければ幸いです

どうもありがとう

4

2 に答える 2

2

私は一般的にそれがこのように行われるのを見てきました、そしてそれを自分でしました

  • SortOrderはintです
  • 各アイテムは10(つまり、10、20、30、40)または適切な増分で増加します
  • アイテムを上に移動するには、15を引きます
  • アイテムを下に移動するには、15を追加します
  • アイテムを挿入するには、ターゲットを取得して1を加算/減算します
  • 値を等間隔にリセットするNormalizeSort()ルーチンを適用します
    • 10,20、25、30、40 = > 10,20、30、40、50 _

他のものの上に何かを挿入するだけなので、すべてが非常に簡単になります。

list.Add( New Item(..., target.SortOrder +1) )
list.NormalizeSort()

// or 
item.SortOrder += 11, etc

10進数にしたい場合は、すべてを順次にし、ソート順に.1などを追加して、再度正規化することができます。

//アンドリュー

于 2009-08-27T22:17:19.740 に答える
0

Galleries.AllowSorting = true; だと思います。十分な距離です;)

于 2009-08-27T23:03:11.163 に答える