2016-07-05 4 views
0

필자는 ultrawingrid를 사용하여 행을 선택할 수 있으며 강조 표시된 행을 삭제할 수 있어야합니다. 현재 내가 작성한 데이터베이스 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

에 대한 검사를 추가하여 코드를 실행하기 전에 당신이없는 나는이 어떻게 변경합니까 @ 스티브 선택한 행 – Steve

+1

에 그리드의 첫 번째 행에 rowToDelete 설정되어 있기 때문에? 나는 e.Selected.Rows를 사용하여 시도했지만 어느 쪽도 작동하지 않았다. – David

답변

0

당신이 아닌 현재 활성 행

에서 그리드의 첫 번째 행에서 rowToDelete의 값을 복용하고 난 당신이

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

Dim rowToDelete = ugHistory.Rows(0).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