private static void CurrentDataGrid_RecordDeleted(object sender, RecordDeletedEventArgs e) { SfDataGrid dataGrid = sender as SfDataGrid; List <object> value = new List <object>(); if (dataGrid != null) { IDictionary <string, object> objectName = new Dictionary <string, object>(); var command = dataGrid.GetValue(ItemChangedCommandProperty) as ICommand; if (command != null) { var items = e.Items; foreach (var item in items) { BaseDto dto = item as BaseDto; dto.IsDeleted = true; } var collection = dataGrid.View.SourceCollection; foreach (var c in collection) { BaseDto v = c as BaseDto; if (v.IsNew) { value.Add(c); } else if (v.IsDirty) { value.Add(c); } else if (v.IsDeleted) { value.Add(c); } } IEnumerable <object> currentValues = value.Union(items); objectName["DataObject"] = GetDataSource(dataGrid); objectName["DataSourcePath"] = GetDataSourcePath(dataGrid); objectName["ChangedValue"] = currentValues; objectName["DeletedItems"] = true; objectName["Operation"] = ControlExt.GridOp.Delete; objectName["DeletedItems"] = false; objectName["LastRowId"] = dataGrid.GetLastRowIndex(); command.Execute(objectName); } } }
/** * The grid insertion or adding, we need to move between two states: * When it gets the event add new row, * we get the new row event and move the grid operation to insert, * later when we are in a validation row, we validate the row and that's it. */ private static void CurrentDataGrid_RowValidated(object sender, RowValidatedEventArgs e) { SfDataGrid dataGrid = sender as SfDataGrid; DependencyObject dependencyObject = sender as DependencyObject; var command = dataGrid?.GetValue(ItemChangedCommandProperty) as ICommand; List <object> value = new List <object>(); if ((command != null) && (dataGrid != null)) { var dataValue = dataGrid.GetRecordAtRowIndex(e.RowIndex); var rowState = GetGridOperation(dependencyObject); if (dataValue != null) { BaseDto dto = dataValue as BaseDto; if (dto != null) { dto.LastModification = DateTime.Now.ToLongTimeString(); dto.IsNew = (rowState == GridOp.Insert) ? true : false; dto.IsDirty = true; } } var collection = dataGrid.View.SourceCollection; if (collection is IEnumerable <BaseDto> dtoArray) { if (dtoArray.Count() == 0) { return; } } foreach (var c in collection) { BaseDto v = c as BaseDto; if (v != null) { if (v.IsNew) { value.Add(c); } else if (v.IsDirty) { value.Add(c); } else if (v.IsDeleted) { value.Add(c); } } } IDictionary <string, object> objectName = new Dictionary <string, object>(); value.Add(dataValue); objectName["DataObject"] = GetDataSource(dataGrid); objectName["DataSourcePath"] = GetDataSourcePath(dataGrid); objectName["ChangedValue"] = value; objectName["PreviousValue"] = _lastChangedRow; objectName["Operation"] = rowState; objectName["DeletedItems"] = false; objectName["LastRowId"] = dataGrid.GetLastRowIndex(); _lastChangedRow = dataGrid.GetRecordAtRowIndex(e.RowIndex); command.Execute(objectName); SwitchToUpdate(dependencyObject, rowState); } }