I am using ASP.Net MVC and IgniteUI. I have a form which contains form fields to be filled and this form will be posted through Form's POST method named "CreateJournal", I also have a grid which has an UpdateUrl named "SaveJournalDetail" which I have to call before Form submission so that the grid data is also saved on "SUBMIT" button. There is only one submit button and the UpdateUrl as well as Form's POST method have to be triggered through this same button.
The issue:
Scenatio1:When I fill the whole form and there is no error(Validation or any other) the Form's POST method is called therefore the "igtranscations" from grid are lost because "SaveJournalDetail" is never called.
Scenario2:When I fill the form with some errors(Validation or any other) which means the form fails to POST, the UpdateUrl is called. In this scenario I am able to get the "igtransactions" in "SaveJournalDetail" method but "CreateJournal" (Form's POST method) is never called resulting in form data not being posted.
Why is this happening? Scenario2 ensures that my syntax for Updating is fine because it works when POST fails. A short sample could also help.
Hello Tsanna,
Please check this project. I have simulated the whole scenario in this project, And please read the comments, I have specified what I am really aiming for.
When the UpdateUrl's saveChanges method is in progress through AJAx Asynchronous call, just then the Form's POST method gets executed resulting in lost igtransactions. I want to get these transaction in the Form's POST method so that there is no overhead of making to separate POST requests, one through Ajax ("SaveChanges") and one through Form's POST request (synchronous).
Hello Imran,
After further research of this, it seems that it's not possible to get the grid transactions in the same request as the form's. However what you can do instead is to call 'saveChanges' API method of the grid inside of your button click event along with form.submit(). This will invoke an AJAX request to the UpdateUrl option and passes the serialized transaction log (a serialized JSON string) as part of the POST request. Here you can find more information about this method: https://www.igniteui.com/help/api/2014.1/ui.iggrid#methods:saveChanges
Please let me know if this works for you.
If you need further assistance, feel free to contact me.
Sincerely,
Tsanna
OKay, then this takes me back to my initial problem. The "savechanges" Ajax request is cancelled by the browser as soon as the MVC form's POST method is executed. Please check the solution which I attached in my previous post. There you can see that while the "savechanges" method is in the middle of its execution, its cancelled and form's POST method is called. How to fix this issue :|
I'm afraid that the sample that you have sent me recently does not demonstrate the issue that you're describing. Please send me a sample that exactly reproduces your scenario. Otherwise I'm not able to test this behavior and determine the reason that causes the issue.
At the meantime you can try to set some time delay on the 'saveChanges' method via setTimeOut function. I assume that because of the asynchronous execution of both the post requests, it's possible that they overlap and hence one of them is cancelled. However this is only an assumption.
Looking forward to your response.