private void OnPostDeleteManual(GiftBatchTDSARecurringGiftDetailRow ARowToDelete, bool AAllowDeletion, bool ADeletionPerformed, string ACompletionMessage) { if (ADeletionPerformed) { if (FGiftSelectedForDeletion) { FGiftSelectedForDeletion = false; SetBatchLastGiftNumber(); UpdateControlsProtection(); } UpdateTotals(); ((TFrmRecurringGiftBatch)this.ParentForm).SaveChangesManual(); //message to user MessageBox.Show(ACompletionMessage, "Deletion Successful", MessageBoxButtons.OK, MessageBoxIcon.Information); } else if (!AAllowDeletion && (ACompletionMessage.Length > 0)) { //message to user MessageBox.Show(ACompletionMessage, "Deletion not allowed", MessageBoxButtons.OK, MessageBoxIcon.Error); } else if (!ADeletionPerformed && (ACompletionMessage.Length > 0)) { //message to user MessageBox.Show(ACompletionMessage, "Deletion failed", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void ReconcileMotivationDetailFromTextbox(GiftBatchTDSARecurringGiftDetailRow ACurrentDetailRow) { if (FInEditModeFlag) { bool isEmptyDetailRow = (ACurrentDetailRow == null); string motivationDetail = txtDetailMotivationDetailCode.Text; if (!isEmptyDetailRow && (motivationDetail.Length > 0)) { cmbMotivationDetailCode.SetSelectedString(motivationDetail); } else { cmbMotivationDetailCode.SelectedIndex = -1; } txtMotivationDetailDesc.Text = cmbMotivationDetailCode.GetSelectedDescription(); } }
private void ReconcileMotivationDetailFromCombo(GiftBatchTDSARecurringGiftDetailRow ACurrentDetailRow) { if (FInEditModeFlag) { string motivationDetail = string.Empty; string motivationDetailDesc = string.Empty; bool isEmptyDetailRow = (ACurrentDetailRow == null); if (!isEmptyDetailRow && (cmbMotivationDetailCode.SelectedIndex > -1)) { motivationDetail = cmbMotivationDetailCode.GetSelectedString(); motivationDetailDesc = cmbMotivationDetailCode.GetSelectedDescription(); } FMotivationDetail = motivationDetail; txtDetailMotivationDetailCode.Text = motivationDetail; txtMotivationDetailDesc.Text = motivationDetailDesc; } }
private void GetDetailDataFromControlsManual(GiftBatchTDSARecurringGiftDetailRow ARow) { if (ARow == null) { return; } //Handle gift table fields for first detail only if (ARow.DetailNumber == 1) { ARecurringGiftRow giftRow = GetRecurringGiftRow(ARow.GiftTransactionNumber); giftRow.DonorKey = Convert.ToInt64(txtDetailDonorKey.Text); if (cmbDetailMethodOfGivingCode.SelectedIndex == -1) { giftRow.SetMethodOfGivingCodeNull(); } else { giftRow.MethodOfGivingCode = cmbDetailMethodOfGivingCode.GetSelectedString(); } if (cmbDetailMethodOfPaymentCode.SelectedIndex == -1) { giftRow.SetMethodOfPaymentCodeNull(); } else { giftRow.MethodOfPaymentCode = cmbDetailMethodOfPaymentCode.GetSelectedString(); } if (txtDetailReference.Text.Length == 0) { giftRow.SetReferenceNull(); } else { giftRow.Reference = txtDetailReference.Text; } if (cmbDetailReceiptLetterCode.SelectedIndex == -1) { giftRow.SetReceiptLetterCodeNull(); } else { giftRow.ReceiptLetterCode = cmbDetailReceiptLetterCode.GetSelectedString(); } } if (txtDetailCostCentreCode.Text.Length == 0) { ARow.SetCostCentreCodeNull(); } else { ARow.CostCentreCode = txtDetailCostCentreCode.Text; } if (txtDetailAccountCode.Text.Length == 0) { ARow.SetAccountCodeNull(); } else { ARow.AccountCode = txtDetailAccountCode.Text; } if (ARow.IsRecipientKeyNull()) { ARow.SetRecipientDescriptionNull(); } else { UpdateRecipientKeyText(ARow.RecipientKey); } if (txtDetailRecipientLedgerNumber.Text.Length == 0) { ARow.SetRecipientFieldNull(); ARow.SetRecipientLedgerNumberNull(); } else { ARow.RecipientField = Convert.ToInt64(txtDetailRecipientLedgerNumber.Text); ARow.RecipientLedgerNumber = ARow.RecipientField; } }
private void ShowDetailsManual(GiftBatchTDSARecurringGiftDetailRow ARow) { if (!txtDetailRecipientKeyMinistry.Visible) { SetTextBoxOverlayOnKeyMinistryCombo(true); } else if (!FTransactionsLoaded) { SetTextBoxOverlayOnKeyMinistryCombo(); } if (ARow == null) { return; } try { this.Cursor = Cursors.WaitCursor; FShowingDetails = true; //Record current values for motivation FMotivationGroup = ARow.MotivationGroupCode; FMotivationDetail = ARow.MotivationDetailCode; //Show gift table values ARecurringGiftRow giftRow = GetRecurringGiftRow(ARow.GiftTransactionNumber); ShowDetailsForGift(giftRow); if (ARow.IsCostCentreCodeNull()) { txtDetailCostCentreCode.Text = string.Empty; } else { txtDetailCostCentreCode.Text = ARow.CostCentreCode; } if (ARow.IsAccountCodeNull()) { txtDetailAccountCode.Text = string.Empty; } else { txtDetailAccountCode.Text = ARow.AccountCode; } if (ARow.IsRecipientKeyNull()) { txtDetailRecipientKey.Text = String.Format("{0:0000000000}", 0); UpdateRecipientKeyText(0); } else { txtDetailRecipientKey.Text = String.Format("{0:0000000000}", ARow.RecipientKey); UpdateRecipientKeyText(ARow.RecipientKey); } if (Convert.ToInt64(txtDetailRecipientKey.Text) == 0) { RecipientPartnerClassChanged(null); } if (Convert.ToInt64(txtDetailRecipientLedgerNumber.Text) == 0) { RecipientPartnerClassChanged(null); } ShowDonorInfo(Convert.ToInt64(txtDetailDonorKey.Text)); UpdateControlsProtection(ARow); } finally { FShowingDetails = false; this.Cursor = Cursors.Default; } }
private void PostDeleteManual(GiftBatchTDSARecurringGiftDetailRow ARowToDelete, bool AAllowDeletion, bool ADeletionPerformed, string ACompletionMessage) { if (ADeletionPerformed) { if (FGiftSelectedForDeletion) { FGiftSelectedForDeletion = false; SetBatchLastGiftNumber(); UpdateControlsProtection(); if (!pnlDetails.Enabled) { ClearControls(); } } UpdateTotals(); ((TFrmRecurringGiftBatch) this.ParentForm).SaveChangesManual(); //message to user MessageBox.Show(ACompletionMessage, "Deletion Successful", MessageBoxButtons.OK, MessageBoxIcon.Information); } else if (!AAllowDeletion && (ACompletionMessage.Length > 0)) { //message to user MessageBox.Show(ACompletionMessage, "Deletion not allowed", MessageBoxButtons.OK, MessageBoxIcon.Error); } else if (!ADeletionPerformed && (ACompletionMessage.Length > 0)) { //message to user MessageBox.Show(ACompletionMessage, "Deletion failed", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private bool DeleteRowManual(GiftBatchTDSARecurringGiftDetailRow ARowToDelete, ref string ACompletionMessage) { bool deletionSuccessful = false; ACompletionMessage = string.Empty; if (ARowToDelete == null) { return deletionSuccessful; } // temporarily disable New Donor Warning ((TFrmRecurringGiftBatch) this.ParentForm).NewDonorWarning = false; if ((ARowToDelete.RowState != DataRowState.Added) && !((TFrmRecurringGiftBatch) this.ParentForm).SaveChangesManual()) { MessageBox.Show("Error in trying to save prior to deleting current gift detail!"); return deletionSuccessful; } ((TFrmRecurringGiftBatch) this.ParentForm).NewDonorWarning = true; //Backup the Dataset for reversion purposes GiftBatchTDS FTempDS = (GiftBatchTDS)FMainDS.Copy(); FTempDS.Merge(FMainDS); if (ARowToDelete.RowState != DataRowState.Added) { FMainDS.AcceptChanges(); } int selectedDetailNumber = ARowToDelete.DetailNumber; int giftToDeleteTransNo = 0; string filterAllGiftsOfBatch = String.Empty; string filterAllGiftDetailsOfBatch = String.Empty; int detailRowCount = FGiftDetailView.Count; try { //Speeds up deletion of larger gift sets FMainDS.EnforceConstraints = false; //Delete current detail row ARowToDelete.Delete(); //If there existed (before the delete row above) more than one detail row, then no need to delete gift header row if (detailRowCount > 1) { FGiftSelectedForDeletion = false; foreach (DataRowView rv in FGiftDetailView) { GiftBatchTDSARecurringGiftDetailRow row = (GiftBatchTDSARecurringGiftDetailRow)rv.Row; if (row.DetailNumber > selectedDetailNumber) { row.DetailNumber--; } } FGift.LastDetailNumber--; FPetraUtilsObject.SetChangedFlag(); } else { giftToDeleteTransNo = FGift.GiftTransactionNumber; TLogging.Log("Delete recurring row: " + giftToDeleteTransNo.ToString()); // Reduce all Gift Detail row Transaction numbers by 1 if they are greater then gift to be deleted filterAllGiftDetailsOfBatch = String.Format("{0}={1} And {2}>{3}", ARecurringGiftDetailTable.GetBatchNumberDBName(), FBatchNumber, ARecurringGiftDetailTable.GetGiftTransactionNumberDBName(), giftToDeleteTransNo); DataView giftDetailView = new DataView(FMainDS.ARecurringGiftDetail); giftDetailView.RowFilter = filterAllGiftDetailsOfBatch; giftDetailView.Sort = String.Format("{0} ASC", ARecurringGiftDetailTable.GetGiftTransactionNumberDBName()); foreach (DataRowView rv in giftDetailView) { GiftBatchTDSARecurringGiftDetailRow row = (GiftBatchTDSARecurringGiftDetailRow)rv.Row; row.GiftTransactionNumber--; } //Cannot delete the gift row, just copy the data of rows above down by 1 row // and then mark the top row for deletion //In other words, bubble the gift row to be deleted to the top filterAllGiftsOfBatch = String.Format("{0}={1} And {2}>={3}", ARecurringGiftTable.GetBatchNumberDBName(), FBatchNumber, ARecurringGiftTable.GetGiftTransactionNumberDBName(), giftToDeleteTransNo); DataView giftView = new DataView(FMainDS.ARecurringGift); giftView.RowFilter = filterAllGiftsOfBatch; giftView.Sort = String.Format("{0} ASC", ARecurringGiftTable.GetGiftTransactionNumberDBName()); ARecurringGiftRow giftRowToReceive = null; ARecurringGiftRow giftRowToCopyDown = null; ARecurringGiftRow giftRowCurrent = null; int currentGiftTransNo = 0; foreach (DataRowView gv in giftView) { giftRowCurrent = (ARecurringGiftRow)gv.Row; currentGiftTransNo = giftRowCurrent.GiftTransactionNumber; if (currentGiftTransNo > giftToDeleteTransNo) { giftRowToCopyDown = giftRowCurrent; //Copy column values down for (int j = 3; j < giftRowToCopyDown.Table.Columns.Count; j++) { //Update all columns except the pk fields that remain the same if (!giftRowToCopyDown.Table.Columns[j].ColumnName.EndsWith("_text")) { giftRowToReceive[j] = giftRowToCopyDown[j]; } } } if (currentGiftTransNo == FBatchRow.LastGiftNumber) { //Mark last record for deletion giftRowCurrent.ChargeStatus = MFinanceConstants.MARKED_FOR_DELETION; } //Will always be previous row giftRowToReceive = giftRowCurrent; } FPreviouslySelectedDetailRow = null; FPetraUtilsObject.SetChangedFlag(); FGiftSelectedForDeletion = true; FBatchRow.LastGiftNumber--; } //Force a change in the batch row to make sure it exists in the dataset to save FBatchRow.DateModified = DateTime.Now; //Try to save changes if (((TFrmRecurringGiftBatch) this.ParentForm).SaveChangesManual()) { //Clear current batch's gift data and reload from server RefreshCurrentRecurringBatchGiftData(FBatchNumber); } else { throw new Exception("Unable to save after deleting a recurring gift!"); } ACompletionMessage = Catalog.GetString("Recurring gift row deleted successfully!"); deletionSuccessful = true; } catch (Exception ex) { ACompletionMessage = ex.Message; MessageBox.Show(ex.Message, "Gift Deletion Error", MessageBoxButtons.OK, MessageBoxIcon.Error); //Revert to previous state FMainDS.Merge(FTempDS); } finally { FMainDS.EnforceConstraints = true; SetGiftDetailDefaultView(); FFilterAndFindObject.ApplyFilter(); } UpdateRecordNumberDisplay(); return deletionSuccessful; }
private bool PreDeleteManual(GiftBatchTDSARecurringGiftDetailRow ARowToDelete, ref string ADeletionQuestion) { bool allowDeletion = true; FGift = GetRecurringGiftRow(FPreviouslySelectedDetailRow.GiftTransactionNumber); FFilterAllDetailsOfGift = String.Format("{0}={1} and {2}={3}", ARecurringGiftDetailTable.GetBatchNumberDBName(), FPreviouslySelectedDetailRow.BatchNumber, ARecurringGiftDetailTable.GetGiftTransactionNumberDBName(), FPreviouslySelectedDetailRow.GiftTransactionNumber); FGiftDetailView = new DataView(FMainDS.ARecurringGiftDetail); FGiftDetailView.RowFilter = FFilterAllDetailsOfGift; FGiftDetailView.Sort = ARecurringGiftDetailTable.GetDetailNumberDBName() + " ASC"; String formattedDetailAmount = StringHelper.FormatUsingCurrencyCode(ARowToDelete.GiftAmount, GetCurrentRecurringBatchRow().CurrencyCode); if (FGiftDetailView.Count == 1) { ADeletionQuestion = String.Format(Catalog.GetString("Are you sure you want to delete transaction {1} from Gift Batch no. {2}?" + "\n\r\n\r" + " From: {3}" + "\n\r" + " To: {4}" + "\n\r" + "Amount: {5}"), ARowToDelete.DetailNumber, ARowToDelete.GiftTransactionNumber, ARowToDelete.BatchNumber, ARowToDelete.DonorName, ARowToDelete.RecipientDescription, formattedDetailAmount); } else if (FGiftDetailView.Count > 1) { ADeletionQuestion = String.Format(Catalog.GetString("Are you sure you want to delete detail {0} from transaction {1} in Gift Batch no. {2}?" + "\n\r\n\r" + " From: {3}" + "\n\r" + " To: {4}" + "\n\r" + "Amount: {5}"), ARowToDelete.DetailNumber, ARowToDelete.GiftTransactionNumber, ARowToDelete.BatchNumber, ARowToDelete.DonorName, ARowToDelete.RecipientDescription, formattedDetailAmount); } else //this should never happen { ADeletionQuestion = String.Format(Catalog.GetString("Recurring Gift no. {0} in Gift Batch no. {1} has no detail rows in the Gift Detail table!"), ARowToDelete.GiftTransactionNumber, ARowToDelete.BatchNumber); allowDeletion = false; } return allowDeletion; }
/// <summary> /// Creates a new Recurring Gift or Recurring Gift detail depending upon the parameter /// </summary> /// <param name="ACompletelyNewRecurringGift"></param> private void CreateANewRecurringGift(bool ACompletelyNewRecurringGift) { ARecurringGiftRow CurrentRecurringGiftRow = null; bool IsEmptyGrid = (grdDetails.Rows.Count == 1); bool HasChanges = FPetraUtilsObject.HasChanges; bool SelectEndRow = false; bool FPrevRowIsNull = (FPreviouslySelectedDetailRow == null); bool CopyDetails = false; bool AutoSaveSuccessful = FAutoSave && HasChanges && ((TFrmRecurringGiftBatch)ParentForm).SaveChangesManual(); FCreatingNewGift = true; try { //May need to copy values down if a new detail row inside current Recurring Gift int RecurringGiftTransactionNumber = 0; string donorName = string.Empty; string donorClass = string.Empty; bool confidentialRecurringGiftFlag = false; bool chargeFlag = false; bool taxDeductible = false; string motivationGroupCode = string.Empty; string motivationDetailCode = string.Empty; if (AutoSaveSuccessful || ((!FAutoSave || !HasChanges) && ValidateAllData(true, TErrorProcessingMode.Epm_IgnoreNonCritical))) { if (!ACompletelyNewRecurringGift) //i.e. a RecurringGift detail { ACompletelyNewRecurringGift = IsEmptyGrid; } CopyDetails = (!ACompletelyNewRecurringGift && !FPrevRowIsNull); if (CopyDetails) { //Allow for possibility that FPrev... may have some null column values RecurringGiftTransactionNumber = FPreviouslySelectedDetailRow.GiftTransactionNumber; donorName = FPreviouslySelectedDetailRow.IsDonorNameNull() ? string.Empty : FPreviouslySelectedDetailRow.DonorName; donorClass = FPreviouslySelectedDetailRow.IsDonorClassNull() ? string.Empty : FPreviouslySelectedDetailRow.DonorClass; confidentialRecurringGiftFlag = FPreviouslySelectedDetailRow.IsConfidentialGiftFlagNull() ? false : FPreviouslySelectedDetailRow.ConfidentialGiftFlag; chargeFlag = FPreviouslySelectedDetailRow.IsChargeFlagNull() ? true : FPreviouslySelectedDetailRow.ChargeFlag; taxDeductible = FPreviouslySelectedDetailRow.IsTaxDeductibleNull() ? true : FPreviouslySelectedDetailRow.TaxDeductible; motivationGroupCode = FPreviouslySelectedDetailRow.IsMotivationGroupCodeNull() ? string.Empty : FPreviouslySelectedDetailRow. MotivationGroupCode; motivationDetailCode = FPreviouslySelectedDetailRow.IsMotivationDetailCodeNull() ? string.Empty : FPreviouslySelectedDetailRow. MotivationDetailCode; } //Set previous row to Null. FPreviouslySelectedDetailRow = null; if (ACompletelyNewRecurringGift) { //Run this if a new Recurring Gift is requested or required. SelectEndRow = true; // we create the row locally, no dataset ARecurringGiftRow recurringGiftRow = FMainDS.ARecurringGift.NewRowTyped(true); recurringGiftRow.LedgerNumber = FBatchRow.LedgerNumber; recurringGiftRow.BatchNumber = FBatchRow.BatchNumber; recurringGiftRow.GiftTransactionNumber = ++FBatchRow.LastGiftNumber; recurringGiftRow.MethodOfPaymentCode = FBatchRow.MethodOfPaymentCode; recurringGiftRow.LastDetailNumber = 1; FMainDS.ARecurringGift.Rows.Add(recurringGiftRow); CurrentRecurringGiftRow = recurringGiftRow; mniDonorHistory.Enabled = false; //Reset textboxes to zero txtGiftTotal.NumberValueDecimal = 0; } else { CurrentRecurringGiftRow = GetRecurringGiftRow(RecurringGiftTransactionNumber); CurrentRecurringGiftRow.LastDetailNumber++; //If adding detail to current last Recurring Gift, then new detail will be bottom row in grid if (FBatchRow.LastGiftNumber == RecurringGiftTransactionNumber) { SelectEndRow = true; } } //New Recurring Gifts will require a new detail anyway, so this code always runs GiftBatchTDSARecurringGiftDetailRow newRow = FMainDS.ARecurringGiftDetail.NewRowTyped(true); newRow.LedgerNumber = FBatchRow.LedgerNumber; newRow.BatchNumber = FBatchRow.BatchNumber; newRow.GiftTransactionNumber = CurrentRecurringGiftRow.GiftTransactionNumber; newRow.DetailNumber = CurrentRecurringGiftRow.LastDetailNumber; newRow.MethodOfPaymentCode = CurrentRecurringGiftRow.MethodOfPaymentCode; newRow.MethodOfGivingCode = CurrentRecurringGiftRow.MethodOfGivingCode; newRow.DonorKey = CurrentRecurringGiftRow.DonorKey; if (CopyDetails) { newRow.DonorName = donorName; newRow.DonorClass = donorClass; newRow.ConfidentialGiftFlag = confidentialRecurringGiftFlag; newRow.ChargeFlag = chargeFlag; newRow.TaxDeductible = taxDeductible; newRow.MotivationGroupCode = motivationGroupCode; newRow.MotivationDetailCode = motivationDetailCode; // set the auto-populate comment if needed AMotivationDetailRow motivationDetail = (AMotivationDetailRow)FMainDS.AMotivationDetail.Rows.Find( new object[] { FLedgerNumber, newRow.MotivationGroupCode, newRow.MotivationDetailCode }); if ((motivationDetail != null) && motivationDetail.Autopopdesc) { newRow.GiftCommentOne = motivationDetail.MotivationDetailDesc; } } else { newRow.MotivationGroupCode = MFinanceConstants.MOTIVATION_GROUP_GIFT; newRow.MotivationDetailCode = MFinanceConstants.GROUP_DETAIL_SUPPORT; } FMainDS.ARecurringGiftDetail.Rows.Add(newRow); FPetraUtilsObject.SetChangedFlag(); if (!SelectEndRow && !SelectDetailRowByDataTableIndex(FMainDS.ARecurringGiftDetail.Rows.Count - 1)) { if (!FFilterAndFindObject.IsActiveFilterEqualToBase) { MessageBox.Show( MCommonResourcestrings.StrNewRecordIsFiltered, MCommonResourcestrings.StrAddNewRecordTitle, MessageBoxButtons.OK, MessageBoxIcon.Information); FFilterAndFindObject.FilterPanelControls.ClearAllDiscretionaryFilters(); if (FFilterAndFindObject.FilterFindPanel.ShowApplyFilterButton != TUcoFilterAndFind.FilterContext.None) { FFilterAndFindObject.ApplyFilter(); } SelectDetailRowByDataTableIndex(FMainDS.ARecurringGiftDetail.Rows.Count - 1); } } btnDeleteAll.Enabled = btnDelete.Enabled; UpdateRecordNumberDisplay(); FLastDonor = -1; //Select end row if (SelectEndRow) { grdDetails.SelectRowInGrid(grdDetails.Rows.Count - 1); } //Focus accordingly if (ACompletelyNewRecurringGift) { txtDetailDonorKey.Focus(); } else { txtDetailRecipientKey.Focus(); } //FPreviouslySelectedDetailRow should now be pointing to the newly added row TUC_RecurringGiftTransactions_Recipient.UpdateRecipientKeyText(0, FPreviouslySelectedDetailRow, cmbDetailMotivationGroupCode.GetSelectedString(), cmbDetailMotivationDetailCode.GetSelectedString()); cmbKeyMinistries.Clear(); mniRecipientHistory.Enabled = false; } } finally { FCreatingNewGift = false; if (AutoSaveSuccessful) { FPetraUtilsObject.WriteToStatusBar(MCommonResourcestrings.StrSavingDataSuccessful); } } }
/// <summary> /// Update the transaction method payment from outside /// </summary> public void UpdateMethodOfPayment() { Int32 LedgerNumber; Int32 BatchNumber; if (!((TFrmRecurringGiftBatch)this.ParentForm).GetBatchControl().FBatchLoaded) { return; } FBatchRow = GetRecurringBatchRow(); if (FBatchRow == null) { FBatchRow = ((TFrmRecurringGiftBatch)this.ParentForm).GetBatchControl().GetSelectedDetailRow(); } FBatchMethodOfPayment = ((TFrmRecurringGiftBatch)this.ParentForm).GetBatchControl().MethodOfPaymentCode; LedgerNumber = FBatchRow.LedgerNumber; BatchNumber = FBatchRow.BatchNumber; if (!LoadGiftDataForBatch(LedgerNumber, BatchNumber)) { //No transactions exist to process or corporate exchange rate not found return; } if ((FLedgerNumber == LedgerNumber) && (FBatchNumber == BatchNumber)) { //Rows already active in transaction tab. Need to set current row ac code below will not update selected row if (FPreviouslySelectedDetailRow != null) { FPreviouslySelectedDetailRow.MethodOfPaymentCode = FBatchMethodOfPayment; cmbDetailMethodOfPaymentCode.SetSelectedString(FBatchMethodOfPayment); } } //Update all transactions DataView GiftView = new DataView(FMainDS.ARecurringGift); GiftView.RowStateFilter = DataViewRowState.CurrentRows; GiftView.RowFilter = String.Format("{0}={1}", ARecurringGiftTable.GetBatchNumberDBName(), BatchNumber); foreach (DataRowView drv in GiftView) { ARecurringGiftRow giftRow = (ARecurringGiftRow)drv.Row; giftRow.MethodOfPaymentCode = FBatchMethodOfPayment; } //Do same at detail level to update the grid DataView GiftDetailView = new DataView(FMainDS.ARecurringGiftDetail); GiftDetailView.RowStateFilter = DataViewRowState.CurrentRows; GiftDetailView.RowFilter = String.Format("{0}={1}", ARecurringGiftDetailTable.GetBatchNumberDBName(), BatchNumber); foreach (DataRowView drv in GiftDetailView) { GiftBatchTDSARecurringGiftDetailRow giftDetailRow = (GiftBatchTDSARecurringGiftDetailRow)drv.Row; giftDetailRow.MethodOfPaymentCode = FBatchMethodOfPayment; } }