2010-07-15 2 views
0

У меня есть таблица (myTable), что я хочу удалить строки из, но не удалить их. Я истекаю их, используя myTable.ActiveFlag. Поэтому, когда я «удаляю» строку из myTable, я бы хотел запустить UPDATE myTable SET ActiveFlag = 0 WHERE id = @rowId.Как я могу переопределить DevExpress GridView delete

Каков наилучший способ сделать это с помощью DevExpress Gridcontrol с GridView?

Я в настоящее время:

Private Sub gcMyTableMaintenance_EmbeddedNavigator_ButtonClick(ByVal sender As System.Object, ByVal e As DevExpress.XtraEditors.NavigatorButtonClickEventArgs) Handles gcMyTableMaintenance.EmbeddedNavigator.ButtonClick 
    If e.Button.ButtonType = DevExpress.XtraEditors.NavigatorButtonType.Remove Then 
     //'TODO: Remove Row 
    End If 
    e.Handled = True 
End Sub 

Я думал о запуске хранимой процедуры или SQL заявления здесь, но есть более простой или более подходящий способ сделать это?


Вот базовая версия моего последнего кода:

Private Sub gcMyTableMaintenance_EmbeddedNavigator_ButtonClick(ByVal sender As System.Object, ByVal e As DevExpress.XtraEditors.NavigatorButtonClickEventArgs) Handles gcMyTableMaintenance.EmbeddedNavigator.ButtonClick 
    If e.Button.ButtonType = DevExpress.XtraEditors.NavigatorButtonType.Remove Then 
     Dim iMyTableId As Int32 = 0 

     iMyTableId = gvMyTableMaintenance.GetFocusedRowCellValue("id") 

     Using conn As New SqlConnection(MyConnectionString) 
      Using lCmd As New SqlCommand() 
       Try 
        lCmd.Connection = conn 
        lCmd.CommandType = CommandType.StoredProcedure 
        lCmd.CommandText = "ExpireFromMyTable" 
        lCmd.Parameters.AddWithValue("@myTableId", iMyTableId) 
        conn.Open() 
        lCmd.ExecuteNonQuery() 
        conn.Close() 

        //'Need to delete from 
        gvMyTableMaintenance.DeleteRow(gvMyTableMaintenance.FocusedRowHandle) 
       Catch ex As Exception 
        //'Handle Exception 
       End Try 
      End Using 
     End Using 
    End If 
    e.Handled = True 
End Sub 
+0

Рассмотрим разместить свое решение как ответ, так что может быть полезно для будущих читателей. – BartoszKP

ответ

0

Вот базовая версия моего последнего кода:

Private Sub gcMyTableMaintenance_EmbeddedNavigator_ButtonClick(ByVal sender As System.Object, ByVal e As DevExpress.XtraEditors.NavigatorButtonClickEventArgs) Handles gcMyTableMaintenance.EmbeddedNavigator.ButtonClick 
    If e.Button.ButtonType = DevExpress.XtraEditors.NavigatorButtonType.Remove Then 
     Dim iMyTableId As Int32 = 0 

     iMyTableId = gvMyTableMaintenance.GetFocusedRowCellValue("id") 

     Using conn As New SqlConnection(MyConnectionString) 
      Using lCmd As New SqlCommand() 
       Try 
        lCmd.Connection = conn 
        lCmd.CommandType = CommandType.StoredProcedure 
        lCmd.CommandText = "ExpireFromMyTable" 
        lCmd.Parameters.AddWithValue("@myTableId", iMyTableId) 
        conn.Open() 
        lCmd.ExecuteNonQuery() 
        conn.Close() 

        //'Need to delete from 
        gvMyTableMaintenance.DeleteRow(gvMyTableMaintenance.FocusedRowHandle) 
       Catch ex As Exception 
        //'Handle Exception 
       End Try 
      End Using 
     End Using 
    End If 
    e.Handled = True 
End Sub 
+0

Это было добавлено в запрос. –

2

С моей точки зрения, вы выбрали правильный способ реализации этой функции.

Смежные вопросы