2

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ループでさまざまなバリエーションを試しましたが、成功しませんでした。

これは本当に単純なことになる気がしますが、私の心はそれを見ていません.

4

5 に答える 5

0

アイテムが一度に 1 つのスポットしか移動できない場合、ループは不要であり、次のように置き換えることができます。

_bhaList[oldIndex].Number++;
于 2013-09-12T17:07:15.653 に答える
0

場所をシャッフル/交換するだけで済みます。

_bhaList.Insert(newIndex, bha);カウントを1増やします。

replacing選択した 2 つのインデックスだけで試してください。

于 2013-09-12T17:07:26.297 に答える