【发布时间】:2012-11-20 14:59:06
【问题描述】:
我有一个 Telerik RadGrid,它允许用户拖动行来重新排序。在服务器端会发生的是每行的一个 int 列将根据它们拖动的位置进行修改,然后我们在屏幕上对这个图进行排序。
我想不通的是在后面的代码中处理重新排序的最简单方法。在拖动的行之间更新递增/递减任何行的最简单/最佳方法是什么?
编辑:到目前为止我所拥有的
//We should only allow one section to be dragged at a time
GridDataItem draggedItem = e.DraggedItems.Single();
TakeoffSection draggedSection = dc.TakeoffSections.Where(a => a.ID == (long)draggedItem.GetDataKeyValue("ID")).Single();
int origDragSectNo = draggedSection.SectionNo;
GridDataItem destItem = e.DestDataItem;
TakeoffSection destSection = dc.TakeoffSections.Where(a => a.ID == (long)destItem.GetDataKeyValue("ID")).Single();
int origDestSectNo = destSection.SectionNo;
if (e.DropPosition == GridItemDropPosition.Above)
{
if (draggedSection.SectionNo < destSection.SectionNo)
{
//They are dragging *down*!
draggedSection.SectionNo = destSection.SectionNo;
destSection.SectionNo++;
foreach (var item in dc.TakeoffSections.Where(a => a.RevisionID == ActiveRevisionID && a.SectionNo < origDestSectNo && a.SectionNo > origDestSectNo))
item.SectionNo--;
dc.SubmitChanges();
}
else
{
//They are dragging *up*
}
}
【问题讨论】:
-
您的问题不够清楚:您当前的实施有什么问题?你只是不喜欢它的写作方式吗?是不是太慢了?如果太慢,瓶颈在哪里?
标签: c# asp.net drag-and-drop telerik radgrid