The Syncfusion native Blazor components library offers 70+ UI and Data Viz web controls that are responsive and lightweight for building modern web apps.
.NET PDF framework is a high-performance and comprehensive library used to create, read, merge, split, secure, edit, view, and review PDF files in C#/VB.NET.
I''m having a couple of issue involving deleting rows from the underlying data for a GDBG. My GDBG is bound to a custom collection, CustomerIncomes, which contains CustomerIncome objects.
1) If the CurrentCell is on the bottom row of the grid and I remove that CustomerIncome object from CustomerIncomes (and then do grid.RefreshRange(grid.ViewLayout.VisibleCellsRange, True)), the CurrentCell.RowIndex is a row off the bottom of the grid now. How can I tell if CurrentCell.RowIndex is a valid row or not?
2) If I have three rows in the GDBG ("A", "B", and "C") with the CurrentCell in the middle row ("B"), and I remove that CustomerIncome object from CustomerIncomes and do a RefreshRange(...), the grid ends up showing rows "A" and "C" in the first two rows, and a partial "ghost" image of row "C" in a third row (see attached screen shot). Below is my code for my DeleteData() method.
Private Sub DeleteData()
With dtgEmployerInfo
If m_Incomes.Count > 0 AndAlso dtgEmployerInfo.CurrentCell.RowIndex > -1 Then
Dim Index As Integer = .CurrentCell.RowIndex
Dim Msg As String = String.Format( _
"Are you sure you want to delete the following Income?{0}{0}" & _
" Income Source: {1}{0}" & _
" Employer Name: {2}{0}" & _
" Work Phone: {3}{0}" & _
" Extension: {4}{0}" & _
" Income Range: {5}", _
ControlChars.CrLf, _
.Item(Index, .Binder.NameToColIndex(INCOME_TYPE_COLUMN)).CellValue.ToString, _
.Item(Index, .Binder.NameToColIndex(EMPLOYER_NAME_COLUMN)).CellValue.ToString, _
.Item(Index, .Binder.NameToColIndex(WORK_PHONE_COLUMN)).CellValue.ToString, _
.Item(Index, .Binder.NameToColIndex(EXTENSION_COLUMN)).CellValue.ToString, _
.Item(Index, .Binder.NameToColIndex(INCOME_RANGE_COLUMN)).CellValue.ToString)
Dim Result As MsgBoxResult = MsgBox(Msg, MsgBoxStyle.YesNo, "Delete Income?")
If Result = MsgBoxResult.Yes Then
Dim Position As Integer = .Binder.RowIndexToPosition(Index)
If Position < 0 Or Position > m_Incomes.Count - 1 Then
Throw New ApplicationException("Invalid Income Index. Cannot delete selected Income.")
End If
m_Incomes.Remove(m_Incomes(Position))
If m_Incomes.Count > 0 Then
.CurrentCell.MoveTo(1, 1)
.CurrentCell.ScrollInView()
End If
.RefreshRange(.ViewLayout.VisibleCellsRange, True)
DisplayData()
End If
End If
End With
End Sub
-----
Lee Perkins
ADAdministrator Syncfusion Team June 9, 2004 04:32 PM UTC
1) compare the CurrentCell.RowIndex to grid.Model.RowCount to see if it is valid.
2) Did not see your picture, but if it is only the current cell that is ''ghosting'', the try this. Before you delete a row, try calling grid.CurrentCell.EndEdit() and grid.Binder.EndEdit() to make sure there are no pending changes when you delete the row.
If it is the whole row that is ghosting, then try calling grid.Invalidate() before the refreshrange call to see if that clears things up.
LPLee PerkinsJune 9, 2004 04:35 PM UTC
Thanks for the suggestions, I''ll try them. Also, here''s the image. It''s the whole row that''s ghosting, with a chunk out of the middle. You''ll have to see the image to get it. :)
GhostRow_1603.zip
-----
Lee Perkins
LPLee PerkinsJune 9, 2004 04:39 PM UTC
Both suggestions worked like a champ. Thanks!
-----
Lee Perkins
LPLee PerkinsJune 9, 2004 04:39 PM UTC
Both suggestions worked like a champ. Thanks!
-----
Lee Perkins