I'm trying to delete a row from a WPF datagrid and the datatable it's bound to. Using this suggestion, and others like it, SelectedItems always returns 0 or "Nothing".
I put a "Delete" button on the datagrid. It fires this code. But "SelectedItems" returns nothing. I expect it to return at least "1":
Dim listOfRowsToDelete As New List(Of DataRow)()
For Each drRow As DataRowView In Me.dgXXX.SelectedItems listOfRowsToDelete.Add(drRow.Row) Next 'delete all the rows from the datatable For Each drRow As DataRow In listOfRowsToDelete dt.Rows.Remove(drRow) Next
I tried this code, but SelectedItem is always -1:
Dim index = Me.dgXXX.Items.IndexOf(Me.dgXXX.SelectedItem) If index > -1 Then dt.Rows.RemoveAt(index) End If
I'm not sure what to try next. I suspect my syntax is wrong and I'm not hooking up the datatable to the datagrid properly. The data displays on the datagrid correctly and updates correctly. I'm just not able to delete rows from either the grid or datatable.
Here's the code I use to bind and set events for the datatable:
Private Sub Fill_XXX_Datagrid(sFillSQL As String) Dim Management = New DatabaseManagement() dgXXX.ItemsSource = Management.LoadXXXData(sSQL).DefaultView ' Add a TableNewRow event handler. Put the ID# in the new row. AddHandler dt.TableNewRow, New DataTableNewRowEventHandler(AddressOf NewXXX) AddHandler dt.RowChanged, New DataRowChangeEventHandler(AddressOf XXXRowChanged) AddHandler dt.RowDeleted, New DataRowChangeEventHandler(AddressOf XXXRowChanged) End Sub
Private Sub XXXRowChanged(ByVal sender As Object, ByVal e As DataRowChangeEventArgs) Dim builder As New SqlCommandBuilder(sda) sda.UpdateCommand = builder.GetUpdateCommand() sda.Update(dt) End Sub
I suspect I'm missing syntax between the "Delete" button and marking that row for deletion. XXXRowChanged never fires for a row deletion. I'm not sure what syntax to use to get what I need to be accomplished.
Thanks.
Kris Hood