Silverlight Datagrid New Row走到了底线并搞砸了多重删除逻辑

时间:2016-02-25 15:31:22

标签: vb.net silverlight datagrid

我有一个Silverlight 4应用程序,我的任务是对其进行一些更改。我宁愿在支持的东西中重做它,但目前还不是一个选项。我有一个数据网格,并且我添加了一个按钮,使用两个组合框中的值将新行插入到数据网格和数据库表中:

Private Sub btnAddAccountGroupLink_Click(sender As Object, e As System.Windows.RoutedEventArgs) Handles btnAddAccountGroupLink.Click
    Dim sv_ag As Com_AccountGroup = cbACCT_GROUP.SelectedValue
    Dim sv_cf As CS_FUND = cbACCT_CD.SelectedValue

    AccountGroupLinkData.DataView.Add(New Com_AccountGroupLink() With {.ACCT_GROUP = sv_ag.ACCT_GROUP, .ACCT_CD = sv_cf.ACCT_CD})
    AccountGroupLinkData.SubmitChanges()

End Sub

添加行时,会将其添加到数据网格的底部,而不是添加到正确排序的位置。这也会破坏我从数据网格中删除所选索引的代码:

Private Sub btnRemoveSelected_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles btnRemoveSelected.Click
    If MessageBox.Show("Are you sure you want to delete the selected records?", "Confirmation", MessageBoxButton.OKCancel) = MessageBoxResult.OK Then
        Dim indexesToDelete As New List(Of Integer)

        For i As Integer = 0 To AccountGroupLinkData.DataView.Count - 1
            If AccountGroupLinkData.DataView(i).IsSelected Then
                indexesToDelete.Add(i)
            End If
        Next i

        For d As Integer = 0 To indexesToDelete.Count - 1
            AccountGroupLinkData.DataView.RemoveAt(0)
        Next d

        AccountGroupLinkData.SubmitChanges()

    End If

End Sub

因此,如果我删除底行,它实际上会删除该行应该位于的行。

如何强制数据网格更新或将行显示在正确的位置?

1 个答案:

答案 0 :(得分:1)

我通过在SubmitChanges:

之后添加此代码解决了这个问题
NavigationService.Refresh()

这会刷新Silverlight页面,行会弹出到正确的位置。