这可能是非常简单的事情,但经过几个小时的编码,我已经空白了。 我有一个通用列表,我填写在页面加载
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
}
答案 0 :(得分:0)
我认为你要找的是detail.Lineid = i;
。您可以从int i = index
而不是0
开始,因为index
之前的任何内容都不会更改。