/// <summary> /// /// </summary> private void PermissionTarget_dialog_Closing(object sender, CancelRoutedEventArgs e) { // Retrieve relevant parameters object[] parameters = PermissionTarget_dialog.Content as object[]; Oltp.AccountPermissionDataTable permissionsTable = parameters[1] as Oltp.AccountPermissionDataTable; if (permissionsTable.GetChanges() == null) { return; } MessageBoxResult result = MessageBox.Show( "Discard changes?", "Confirm", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel); e.Cancel = result == MessageBoxResult.Cancel; }
/// <summary> /// /// </summary> private void PermissionTarget_dialog_ApplyingChanges(object sender, CancelRoutedEventArgs e) { // Retrieve relevant parameters object[] parameters = PermissionTarget_dialog.Content as object[]; Oltp.AccountPermissionDataTable permissionsTable = parameters[1] as Oltp.AccountPermissionDataTable; DataTable changes = permissionsTable.GetChanges(); // No changes were made, skip the apply (but don't cancel) if (changes == null) { e.Skip = true; PermissionTarget_dialog.EndApplyChanges(e); return; } // Save the changes to the DB Window.AsyncOperation(delegate() { using (OltpProxy proxy = new OltpProxy()) { proxy.Service.AccountPermission_Save(changes as Oltp.AccountPermissionDataTable); } }, delegate(Exception ex) { // Failed, so cancel and display a message MainWindow.MessageBoxError("Error while saving permissions.", ex); e.Cancel = true; return(false); }, delegate() { permissionsTable.AcceptChanges(); PermissionTarget_dialog.EndApplyChanges(e); }); }