如何在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时,这一行不起作用,因为--++应该更改。我想独立于此。

如何在C#中更改两个记录的字段值

我认为您混淆了优先级和排序的含义。

优先级通常不给出订单,因为两个或多个元素可以具有相同的优先级。这只是对这个元素的一种需求。

相反,Order将元素按顺序排列,这样每个元素都有一个唯一的Order Position。这可以通过使用优先级和/或其他字段来完成,这些字段可能类似于时间戳。它也可以是上升或下降,但这不会改变优先级。

因此,我建议实现一个更改优先级的功能。另外,实现第二个用于排序的功能,该功能可以包括OrderByPriority。如果有人更改了某个元素的优先级,只需刷新排序列表,该元素就会向上或向下或任何位置。。。