0

記事/ニュース管理システムで注文するスキーマを考え出し、注文を変更するのに少し問題があります。

ここに行きます:私は次のようにニュースオブジェクトモデルを持っています:

 class News {
   int id;
   string Title;
   string Content;
   string OrderId;
   // trimmed
 }

オブジェクトモデルのCRUDがあります。およびリストは次のとおりです。

Id Title Order
1. Foo    -+
2. Bar    -+
3. Glah   -+

私がやりたいのは、ユーザーがクリックしたときです。最初のニュースでは、1と2のorderidを置き換え、もちろん表示も行います。

サーバー側でこれを行うにはどうすればよいですか?たとえば、1の場合、アイテムの注文IDは1ですが、これよりも注文IDが高い最初のアイテムを見つけるにはどうすればよいですか。

または、2。Barをクリックします。-をクリックすると、注文IDを検索して最初のIDに置き換えるにはどうすればよいですか。または、[+]をクリックします。このニュースの注文IDを3に置き換えるにはどうすればよいですか。

これを行うためのより良い方法はありますか?

ユーザーがドラッグアンドドロップするUIもありますか?その上に何かポインタはありますか?

4

2 に答える 2

1

ユーザーがアイテムの場所を変更すると、サーバーは変更されたアイテムとその新しい位置を知る必要があります。以下のコードでは、リストを使用して新しい位置を把握しています。このサンプルコードでは、newPositionは新しいゼロベースの位置であり、selectedArticleは移動された記事です。

List<Article> articles = LoadSortedArticles()
articles.Remove(selectedArticle);
articles.Insert(newPosition, selectedArticle);
UpdateArticles(articles);

実行後、リスト内の記事のインデックスは、その新しい位置を示します。これはリスト内のすべての記事に適用され、ドラッグアンドドロップUIでも同じように機能します。エンティティフレームワークはわかりませんが、データベースのorderIdフィールドをリスト内の記事のインデックスにマップできる場合は、問題ありません。

これが少なくともあなたにいくつかのアイデアを与えることができることを願っています。他の誰かがエンティティフレームワークに固有のソリューションを提供できるかもしれませんが、記事を並べ替えられたリストに入れて、リストに作業を任せるのが最も簡単な方法かもしれないと思います。

于 2012-12-06T20:19:28.253 に答える
1

ここでの最善のアプローチは、 2つのオブジェクトSwapを受け取り、それらを交換するメソッドを実装することだと思います。これは数値であると想定しています。NewsOrderId

+したがって、このメソッドに、クリックされたオブジェクトと、上のオブジェクト(ユーザーがクリックした場合)または下のオブジェクト(クリックした場合)のいずれかを渡すという考え方になります-。このようにすると、次または前のアイテムを見つけようとするタスクを回避できます。

ドラッグアンドドロップの場合、タスクは少し異なります。最初に、ドラッグされているアイテムとドロップターゲットの間(およびそれを含む)のすべてのアイテムを、で並べ替えて取得する必要がありますOrderId。そこから、ドラッグしたアイテムを次または前のアイテムと交換し(方向に応じて)、ドロップターゲットと交換するまで交換を続けます。

于 2012-12-07T04:56:27.447 に答える