2011-12-19 10 views
0

これは本当にシンプルなことかもしれませんが、数時間のコーディングの後に空白になってしまいました。 私はこれが正常に動作します一般リストの更新

int newtotalrows = listdetail.Count + rowstoadd -1; 
for (int i = listdetail.Count; i <= newtotalrows; i++) 
{ 
    ArDocumentdetail detail = new ArDocumentdetail(); 
    detail.Lineid = i; 
    detail.Itemid = 0; 
    detail.Quantity = 1; 
    if (listdetail.Count > 0) 
     listdetail.Insert(listdetail.Count, detail); 
    else 
     listdetail.Add(detail); 
} 

ViewState["InvoiceDetail"] = listdetail; 
LoadGrid(); 

が、それはこれがGridViewのにバインドされます

lineid | Itemid 
    1  0 
    2  0 
    3  0 

でリストを作成し、ページの読み込みに取り込む一般的なリストを持っています。私のグリッドビューには、行を削除するボタンがあります ここに私の問題があります。

私はそれがインデックスを見つけることができないと言われGridViewコントロールにリストの値を入れしようとすると、 私のリストは今

lineid | Itemid 
    1  0 
    3  0 
あるので、私は私のGridViewのデータバインドさで、その後lineid = 2を削除するとしましょう

が、私のGridViewのは、そう、これらのインデックスが一致していないこの

lineid | Itemid 
    1  0 
    2  0 <- this use to be lineid = 3 

のようなインデックスを読み込みます。リスト内の行を削除すると、私はその行番号を再生成すると思っています。

if (ViewState["InvoiceDetail"] != null) 
listdetail = (ListArDocumentdetail)ViewState["InvoiceDetail"]; 

int index = listdetail.FindIndex(f => f.Lineid == row.RowIndex); 
listdetail.RemoveAt(index); 
for (int i = 0; i <= listdetail.Count; i++) 
{ 
    //here is where i assume it should regenerate list lineid value 
} 

答えて

0

は、私はあなたが探しているものだと思いdetail.Lineid = i;です。 indexが変更される前に何も変更されていないので、0の代わりにint i = indexから始めることができます。

関連する問題