iSeller Commerce
iSeller POS Retail
iSeller POS F&B
iSeller POS Express
Crosslight
WebUI
ClientUI
What's New
Download Trial
Web Solution
Mobile Solution
Enterprise Solution
Custom Development
Blog
Community
Latest Development Blogs
ForumPostTopic
Browse By Tag
I have a serious production problem with the WebGrid's WebGridRowChanges collection (WebGrid version 7.0.7200.403) where it is missing updates from the clientside UI. Unfortunately, we are unable to reproduce this on a regular basis so debugging through the code has been impossible. However, the database clearly shows missing data. There is validation on the client-side to ensure certain fields are populated and we also have auditing on the database to track changes at the table level. The auditing shows that the data was never populated.
Since validation is passing at the client, the only thing I can think of is the WebGridRowChanges don't contain the user changes. Has anyone ever had any issue like this?!
Hello,
Could you explain what scenario do you apply in Client-side UI? Is there anything related with Client binding with Batch Update?
If it is based on Batch update, you can use the parameters available in Batch update Client-side events.
Hope this helps.
Thank you.
Hello,Could you explain what scenario do you apply in Client-side UI? Is there anything related with Client binding with Batch Update?If it is based on Batch update, you can use the parameters available in Batch update Client-side events.Hope this helps. Thank you.
I am sorry, I don't follow you. Can you explain more?
Thanks.
What I meant is you can use Client-side events such as OnAddPendingChanges where you can customize the row changes collection using the parameter provided.
Or, if you prefer to use Server-side, you can try BatchUpdate Server-side events. In this event, you can get the pending row collection using BatchUpdateEventArgs provided.
Hope this helps. Thank you.
Hello,What I meant is you can use Client-side events such as OnAddPendingChanges where you can customize the row changes collection using the parameter provided. Or, if you prefer to use Server-side, you can try BatchUpdate Server-side events. In this event, you can get the pending row collection using BatchUpdateEventArgs provided. Hope this helps. Thank you.
I don't think you understand my issue. The BatchUpdateEventArgs's PendingChanges (List<WebRowChanges>) appears to be missing updates that were made on the client side. As I said, it is not reproducable but pops up time to time. We have validation on the WebGrid to ensure the data exists so it is definately entered into the WebGrid. I also have auditing on the database to ensure the data isn't being overwritten or deleted.
/// <summary> /// Handles the Treaty Claim's DataGrid control's OnBatchUpdate event /// </summary> /// <param name="sender">Sender</param> /// <param name="e">Event arugments</param> protected void grdTreatyClaims_OnBatchUpdate(object sender, ISNet.WebUI.WebGrid.BatchUpdateEventArgs e) { // Perform Treaty Claims Grid's batch update if (e == null) { return; } this.PerformTreatyClaimsGridBatchUpdate(this.GeniusClaimAmountMaster, e.PendingChanges); }
/// <summary> /// Perform batch update on the Treaty Claims Grid control's source /// </summary> /// <param name="source">Source to update</param> /// <param name="rowChanges">Row Changes to process</param> /// <returns>Updated source after batch update</returns> private List<Data.GeniusClaimAmountMaster> PerformTreatyClaimsGridBatchUpdate(List<Data.GeniusClaimAmountMaster> source, List<WebGridRowChanges> rowChanges) { Common.Utility.TraceLogger.Instance.Write("PerformTreatyClaimsGridBatchUpdate [START]"); if (rowChanges == null) { return source; } // Perform change updates Data.GeniusClaimAmountMaster item = new Data.GeniusClaimAmountMaster(); if (source == null) { source = new List<Data.GeniusClaimAmountMaster>(); } foreach (WebGridRowChanges rowChangesItem in rowChanges) { if (rowChangesItem.KeyValue != null) { switch (rowChangesItem.RowState) { // Add case RowState.Added: Controllers.FWBWebControls.Treaty.TreatyClaimsGridController.MapRowChangesToObject(item, rowChangesItem); if (item != null) { item.IsDirty = true; source.Add(item); } break; // Update case RowState.Modified: item = Controllers.FWBWebControls.Treaty.TreatyClaimsGridController.GetGeniusClaimAmountMaster(source, rowChangesItem.KeyValue.ToString()); if (item != null) { Controllers.FWBWebControls.Treaty.TreatyClaimsGridController.MapRowChangesToObject(item, rowChangesItem); item.IsDirty = true; } break; // Delete case RowState.Deleted: item = Controllers.FWBWebControls.Treaty.TreatyClaimsGridController.GetGeniusClaimAmountMaster(source, rowChangesItem.KeyValue.ToString()); if (item != null) { item.IsDeleted = true; } break; } } } Common.Utility.TraceLogger.Instance.Write("PerformTreatyClaimsGridBatchUpdate [END]"); return source; }
Hello Shawn,
I am sorry but I still don't understand your issue. That's why at the beginning I was asking you to explain the scenario since I didn't get what you meant.
As far as I know, BatchUpdate pending changes works fine on my end. I never encounter the issue like missing the pending changes updates. Since you said that it is not reproducable, could you provide me a recording file that shows how the issue happens on your end? By viewing the recording video, I may get a clear view on your issue and I can start to investigate your issue further.
or
Choose this if you're already a member of Intersoft Community Forum. You can link your OpenID account to your existing Intersoft Social ID.
Choose this if you don't have an Intersoft account yet. Your authenticated OpenID will be automatically linked to your new Intersoft account.
Enter your Wordpress Blogname