У меня есть таблица (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
Рассмотрим разместить свое решение как ответ, так что может быть полезно для будущих читателей. – BartoszKP