0

VS 2005 버전을 사용하고 있습니다. winform 데스크탑 응용 프로그램을 개발 중입니다. 내가 물건 D (제품 번호 5), 가정은 "제품 번호"열을 제거한 경우DataGridview에서 행을 제거하고 특정 열을 다시 설정하는 방법 (012bb.net 2005)

original datagrid before delete

: 전에 삭제

원본 데이터 그리드 :이 전 아래와 같은 표와 더불어, 언 바운드 DataGridView에 있다고 가정 해 봅시다 그에 따라 스스로 재설정하십시오. 예상 출력은 다음과 같아야합니다

삭제 행 후 :

after delete row

, 그것이 내가 사용자로 점진적으로 할당 된 단지 수 (새 행을 추가 일련 번호입니다되어 있지 않습니다 "항목 없음"열 새로운 물건). rowremoved 이벤트에서 다음 코드를 사용했지만 예상 된 출력을 얻지 못했습니다. 도와주세요. 감사.

답변

0

목표가 셀에 레코드 색인을 표시하는 것일 뿐이므로 셀에 값을 할당 할 필요가 없으며 이벤트에 e.Value = e.RowIndex + 1을 설정하면 충분합니다.

그러나 귀하의 의견에 따라 그 셀에 값이 필요하다고 생각됩니다. 그래서 당신은 RowsRemovedDataGridViewRowsAdded 이벤트를 처리하고 행 번호와 셀 값을 갱신해야합니다

내가 셀에 값을 할당해야하는 이유와 같은 이유가 있습니다
Public Sub RefreshRowNumbers(g As DataGridView) 
    For Each r As DataGridViewRow In g.Rows 
     r.Cells(1).Value = r.Index + 1 
    Next 
End Sub 

Private Sub DataGridView1_RowsRemoved(sender As Object, _ 
    e As DataGridViewRowsRemovedEventArgs) Handles DataGridView1.RowsRemoved 
    RefreshRowNumbers(DirectCast(sender, DataGridView)) 
End Sub 

Private Sub DataGridView1_RowsAdded(sender As Object, _ 
    e As DataGridViewRowsAddedEventArgs) Handles DataGridView1.RowsAdded 
    RefreshRowNumbers(DirectCast(sender, DataGridView)) 
End Sub 
+0

. DataGrid는 사용자가 이미 추가 한 것을 볼 수 있도록 표시하기위한 것입니다. –

+0

좋아, 값이 필요하기 때문에'RowsRemoved' 및'RowsAdded' 이벤트를 처리하고 행 번호를 새로 고쳐야합니다. 어떤 이유에서든 마지막 행 (새 행)을 제외 시키려면'row.IsNewRow = True' 인 경우 행을 제외하는 대신 for 루프를 사용하면됩니다. –

+0

답변에 대한 질문이 있거나 솔루션을 적용하는 데 문제가있는 경우 알려주십시오. –