更新通用列表索引

时间:2011-12-19 21:42:19

标签: c# asp.net list

这可能是非常简单的事情,但经过几个小时的编码,我已经空白了。 我有一个通用列表,我填写在页面加载

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
}

1 个答案:

答案 0 :(得分:0)

我认为你要找的是detail.Lineid = i;。您可以从int i = index而不是0开始,因为index之前的任何内容都不会更改。