更新泛型列表索引
本文关键字:索引 列表 泛型 更新 | 更新日期: 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
之前没有任何变化。