0

Я использую версию VS 2005. Я разрабатываю настольное приложение winform. Скажем, у меня есть несвязанный DataGridView, со столом, как показано ниже:Как удалить строку из datagridview и сбросить определенный столбец (vb.net 2005)

Оригинального DataGrid, прежде чем удалить:

original datagrid before delete

Если я удалил Материал D (№ 5), столбец «Пункт Нет» предполагается соответственно переустановите. Ожидаемый результат должен быть:

После удаления строки:

after delete row

колонке «Пункт Нет» не является AutoNumber, это просто число, которое я назначен пошагово как пользователь добавить в новую строку (Новый вещи). Я попытался использовать следующий код в событии rowremoved, но не смог достичь ожидаемого результата. Пожалуйста помоги. Благодарю.

ответ

0

Если цель только показывает индекс записи в ячейке, то вам не нужно назначать значение ячейке, и этого достаточно, чтобы установить e.Value = e.RowIndex + 1 в CellFormatting событии.

Но, основываясь на вашем комментарии, кажется, что вам нужны эти ячейки, также имеют значения. Таким образом, вы должны обращаться с RowsRemoved и RowsAdded события DataGridView и обновить значение ячейки с номером строки:

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

OK, так как вам нужны значения, вам нужно обрабатывать события «RowsRemoved» и «RowsAdded» и обновлять номера строк. Если по какой-либо причине вы хотите исключить последнюю строку (новую строку), вы можете просто использовать цикл for вместо исключения строки, если 'row.IsNewRow = True'. –

+0

Дайте мне знать, если у вас есть какие-либо вопросы по поводу ответа или если у вас возникли проблемы с применением решения. –

Смежные вопросы