2011-12-19 4 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 컨트롤에 목록에있는 값을 넣어하려고 할 때 내가있는 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에서 시작할 수 있습니다.