如何在C#中更改两个记录的字段值
本文关键字:两个 记录 字段 | 更新日期: 2023-09-27 18:27:40
在我的显示网格数据的项目中,我按优先级排序,用户可以按箭头(向下、向上)更改记录优先级。对于更改优先级,我使用以下代码:
public virtual JsonResult ChangeOrder(int selectedCode, bool isUp)
{
var NewsObj = _newsService.Get(selectedCode);
if (NewsObj == null)
return Json(new { result = false, message = "error" });
int CurrentPriority = NewsObj.Priority;
int OtherPriority = 0;
if (isUp)
{
OtherPriority = CurrentPriority - 1;
}
else
{
OtherPriority = CurrentPriority + 1;
}
var OtherNews = _newsService.GetByPriority(OtherPriority);
if (OtherNews == null)
return Json(new { result = false, message = "error" });
int tmp = NewsObj.Priority;
NewsObj.Priority = OtherNews.Priority;
OtherNews.Priority = tmp;
_uow.MarkAllAsChanges(NewsObj);
_uow.MarkAllAsChanges(OtherNews);
_uow.SaveAllChanges();
return Json(new { result = true, message = "success" });
}
但这些代码取决于排序,例如,当我使用OrdeyByDesc
时,这一行不起作用,因为--
和++
应该更改。我想独立于此。
我认为您混淆了优先级和排序的含义。
优先级通常不给出订单,因为两个或多个元素可以具有相同的优先级。这只是对这个元素的一种需求。
相反,Order将元素按顺序排列,这样每个元素都有一个唯一的Order Position。这可以通过使用优先级和/或其他字段来完成,这些字段可能类似于时间戳。它也可以是上升或下降,但这不会改变优先级。
因此,我建议实现一个更改优先级的功能。另外,实现第二个用于排序的功能,该功能可以包括OrderByPriority。如果有人更改了某个元素的优先级,只需刷新排序列表,该元素就会向上或向下或任何位置。。。