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。或者我单击 + 如何用 3. Glah 替换此新闻的订单 ID?

有更好的方法吗?

还有一些用户拖放的用户界面?对此有任何指示吗?

4

2 回答 2

1

我认为这里最好的方法是实现一个Swap方法,它需要两个News对象并交换它们OrderId,我假设它是数字的。

所以这个想法是你将这个方法传递给被点击的对象,以及上面的一个(如果用户点击了+)或下面的一个(如果他们点击了-)。如果你这样做,那么你就避免了试图找到下一个或上一个项目的任务。

在拖放的情况下,任务略有不同。您首先需要检索(包括)被拖动的项目和放置目标之间的所有项目,按OrderId. 从那里您将拖动的项目与下一个或上一个项目交换(取决于方向),并继续这样做,直到您将它与放置目标交换。

于 2012-12-07T04:56:27.447 回答
1

当用户更改项目的位置时,服务器需要知道哪个项目被更改以及它的新位置是什么。在下面的代码中,我使用 List 来找出新的位置。在此示例代码中,newPosition 是新的从零开始的位置,而 selectedArticle 是被移动的文章。

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

运行后,列表中的文章索引会告诉您它的新位置。这适用于列表中的所有文章,并且对于拖放 UI 的工作方式相同。我不知道实体框架,但是如果您可以将数据库中的orderId字段映射到列表中文章的索引,那么您应该很好。

我希望这至少能给你一些想法。也许其他人可以提供特定于实体框架的解决方案,但我认为将文章放入排序列表并让列表完成工作可能是最简单的方法。

于 2012-12-06T20:19:28.253 回答