2016-07-05 76 views
0

我有一个ultrawridrid,我可以选择行上,并需要能够删除突出显示的行。目前,它调用我编写的数据库SQL查询,但不是删除所选行中的记录,而是删除顶行中的记录。任何人都可以解释为什么?UltraWinGrid删除顶部记录而不是所选的一个

Private Sub btnDeleteIncident_Click(sender As Object, e As EventArgs) Handles btnDeleteIncident.Click 

    Try 
     Dim rowValue = ugHistory.Selected.Rows 

     Dim rowToDelete = ugHistory.Rows(0).Cells(0).Value.ToString 

     Dim removeIncident As MsgBoxResult 
     removeIncident = MsgBox("Are you sure you wish to delete this incident?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Confirm") 

     If removeIncident = MsgBoxResult.Yes Then 

      Database.deleteIncident(rowToDelete) 

      txtClientSave.Text = "" 
      rtbProblem.Text = "" 
      rtbSolution.Text = "" 
      dtpStart.Value = Date.Today 
      dtpEnd.Value = Date.Today 
      dtpStartTime.Value = DateTime.Now 
      dtpEndTime.Value = DateTime.Now 
      cboxSolved.Checked = False 
      btnUpdate.Hide() 
      btnSave.Show() 

     ElseIf removeIncident = MsgBoxResult.No Then 
      loadIncidents() 
     End If 

    Catch Ex As Exception 
     MsgBox("No incidents to delete") 
    End Try 

    loadIncidents() 

End Sub 

数据库SQL查询;

Public Shared Sub deleteIncident(ByVal supportID As Integer) 

    Connect() 

    Dim Dc As New OleDbCommand 
    Dc.Connection = Con 

    Dc.CommandText = "DELETE * FROM tblIncidents WHERE([supportID] = " & supportID & ")" 

    Dc.ExecuteNonQuery() 
    Disconnect() 

End Sub 
+2

因为你设置rowToDelete到电网的第一行不选择 – Steve

+1

行@Steve我该如何改变呢?我尝试过使用e.Selected.Rows,但是这也不起作用 – David

回答

0

您从网格的第一行不是从当前活动行

的,取值为rowToDelete我建议你此行

Dim rowToDelete = ugHistory.Rows(0).Cells(0).Value.ToString 

改变

Dim rowToDelete = ugHistory.ActiveRow.Cells(0).Value.ToString 

此外,在处理参考对象如'Act iveRow”,因此在运行代码前加上一个测试为有效 ActiveRow

if ugHistory.ActiveRow Is Nothing Then 
    Return 
End If 
Dim rowToDelete = ugHistory.ActiveRow.Cells(0).Value.ToString 
+1

这工作,非常感谢你,现在已经停留了几个小时这个问题。 (我是新来的整个Infragistics的东西,对不起!) – David

+1

我总是会接受它作为答案,我只需要再等几分钟。 – David

相关问题