更新泛型列表索引

本文关键字:索引 列表 泛型 更新 | 更新日期: 2023-09-27 18:18:15

这可能是一些非常简单的东西,但经过几个小时的编码,我一片空白。我在页面加载

时填充了一个通用列表
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();

这个很好,它用

创建一个列表
lineid | Itemid
  1        0
  2        0
  3        0

这被绑定到gridview。在我的gridview,我有一个按钮,删除一行这就是我的问题所在。

让我说我删除lineid = 2然后在我的gridview数据绑定当我试图把列表中的值gridview控件它说它找不到索引,因为我的列表现在是

lineid | Itemid
  1        0
  3        0

但是我的gridview读取索引像这样

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

所以这些索引不匹配。我在想什么,当我删除我的列表中的一行,我重新生成lineid。

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
}

更新泛型列表索引

我想你要找的是detail.Lineid = i;。您可以从int i = index开始,而不是从0开始,因为index之前没有任何变化。