0

我有一个带有类别列表的网格视图。在数据库 (MSSQL2008) 中,类别表有一个 SortOrder(INT) NULL 字段。

当前使用以下方法检索类别:

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

现在,我需要做的是向每一行添加“上移”和“下移”按钮,以允许用户以任意方式对项目进行排序。

我最初的想法是:识别所选项目的 ID。识别所选项目之前/之后的项目 ID。DB SortOrders 中已识别项目的交换。

然后我会让 sortorder NOT NULL 并确保它被初始化为一个唯一的数字

我将不胜感激有关此方法的任何替代建议/评论

非常感谢

4

2 回答 2

2

我通常看到它是这样做的,并且我自己也这样做过

  • SortOrder 是一个整数
  • 每个项目增加 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

如果你想让它成为一个小数,那么你可以让它全部连续,只需将 .1 等添加到排序顺序并再次重新规范化。

// 安德鲁

于 2009-08-27T22:17:19.740 回答
0

我相信 Galleries.AllowSorting = true; 就足够了;)

于 2009-08-27T23:03:11.163 回答