【发布时间】:2013-09-12 17:00:00
【问题描述】:
我有一个DataGrid,它绑定到List:_bhaList。
现在,我编写了一个方法,允许用户在网格上选择一个项目,然后将其向上移动。随着它向上移动,No. 列会更新以显示它的当前位置。但是,在这种特殊情况下,我有 3 个项目,如果我选择 No. 2 并将其向上移动,它会与 No. 1 交换位置,并且这些数字会更新,但 No. 3 将更改为 4。如果我重复这个过程,新的No. 4会变成5。
这是我尝试过的代码:
var oldIndex = grdBha.SelectedIndex;
var newIndex = oldIndex - 1;
var bha = _bhaList[oldIndex];
_bhaList.RemoveAt(oldIndex);
bha.Number = oldIndex;
_bhaList.Insert(newIndex, bha);
for (var i = newIndex + 1; i <= _bhaList.Count; i++)
{
if (i != _bhaList.Count)
{
_bhaList[i].Number += 1;
}
}
我在for 循环中尝试了不同的变体,但没有成功。
我感觉这将是一件非常简单的事情,但我的大脑并没有看到它。
【问题讨论】:
-
如果你完全放弃
for循环会发生什么? -
该项目是否一次移动不止一个点?如果不是,为什么要循环?只有两个项目会受到影响:移动的项目,以及前一个项目(与它交换位置)。