原理:在排序前保存新增行,然后将其删除。排序后将其还原。
我这里Column(3)默认是只读的,只有新增行才能输入.可按照自己需要判断新增行.
- Private lstNewRow As New List(Of DataGridViewRow)
- Private Sub dgvData_CellMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles dgvData.CellMouseClick
- Dim i As Integer
- ' DataGridView Header Check
- If e.RowIndex >= 0 Then
- Exit Sub
- End If
- '---------------------------------
- ' When Click DataGridView Header
- ' Check New Rows And Save It
- '---------------------------------
- If lstNewRow.Count <= 0 Then
- For i = dgvData.RowCount - 2 To 0 Step -1
- If dgvData.Rows(i).Cells(3).ReadOnly = False Then
- lstNewRow.Add(dgvData.Rows(i))
- dgvData.Rows.Remove(dgvData.Rows(i))
- Else
- Exit For
- End If
- Next
- End If
- End Sub
- Private Sub dgvData_Sorted(ByVal sender As Object, ByVal e As System.EventArgs) Handles dgvData.Sorted
- If lstNewRow.Count <= 0 Then
- Exit Sub
- End If
- ' Add New Rows To DataGridView
- For i = lstNewRow.Count - 1 To 0 Step -1
- dgvData.Rows.Add(lstNewRow(i))
- Next
- lstNewRow.Clear() ' Clear Saved Container
- End Sub