在gridview中更改项目排序顺序 - LINQ To SQL

时间:2009-08-27 18:18:52

标签: asp.net linq-to-sql gridview datasource

我有一个包含类别列表的gridview。在数据库(MSSQL2008)中,类别表具有SortOrder(INT)NULL字段。

目前使用以下方式检索类别:

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

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

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

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

我很感激有关此方法的任何其他建议/意见

非常感谢

2 个答案:

答案 0 :(得分:2)

我一般都看到过这样做,并且自己完成了

  • SortOrder是一个int
  • 每个项目增加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等添加到排序顺序并再次重新标准化。

//安德鲁

答案 1 :(得分:0)

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