MVC :: Ajax Post Executing OnComplete Even If Confirm Fails?
Jan 26, 2010
I have an Ajax form that lets me dynamically remove rows from a table using the OnComplete AjaxOption. That works great.The problem is that even if I hit "Cancel" on the confirm dialog, it still executes the OnComplete javascript. So the form doesn't post, but it looks like it did to the user (the row is removed from the table).code below:
I added a Button and a LinkButton to same page and set same properties to both of them. LinkButton works fine but Button's PostBackURL not work after executing javascript (Clicked "OK" in message window). it posted back to same page instead of second page. following is the code:
I posted this on Stack overflow [URL] but have not had a solution, just completely different way of doing it without using the Ajax.* helpers so I'm wondering if anyone has an Ajax.* solution here?I'm using MVC 3. I have a method on the controller that returns a Json object, according to this question it should be returned to me as Json, but I am finding that is not the case[URL] here's the code that I have:
[Code].... And the controller: [Code].... The first message box displays the response text which is:{"Success":True, "objectId":"testing"} the second message box displays undefinedSo it is coming back to the client correctly, I'm just not sure how to get it out?...Stefan
The following is a note from Professional ASP.NET MVC 2 by Scott Hanselman ++
You might ask — why did we go through the effort of creating a <form> within our Delete Confi rmation screen? Why not just use a standard hyperlink to link to an action method that does the actual delete operation? The reason is because we want to be careful to guard against Web-crawlers and search engines discovering our URLs and inadvertently causing data to be deleted when they follow the links. HTTP-GET-based URLs are considered safe for them to access/crawl, and they are supposed to not follow HTTP-POST ones. A good rule is to make sure that you always put destructive or data-modifying operations behind HTTP-POST requests.
If web-crawlers and search engine have no access to the page containing deletion button, is it safe to use a standard hyperlink to link to an action method doing the actual delete operation?
I am currently experimenting with dynamically populating a CheckBoxList. When a selection is made, a notification is given via the code behind. Below is the code I have been toying with, attempting to work from a simple base.
So far, the list seems to generate just fine, but anytime I check one of the boxes...I am taken back to the same page, with no boxes checked, and without the code behind having executed. If I manually add the asp:listitems to the checkbox, everything seems to work fine.
[b]Default.aspx[/b]
[Code]....
[b]Default.aspx.vb[/b]
[Code]....
I've pulled off this same procedure with DropDownLists.
I have created a rdlc file (Binded its columns accordingly, sorting is enabled on few columns) and rendering it using a reportviewer control. Everything works fine while loading report first time; it shows the progress indicator & loads it correctly. When I click on sort_button(default shown by control itself) it sorts correctly. Now successive clicks on sort_button shows error :
An error occurred during local report processing. An internal error occurred on the report server. See the error log for more details. Gone through the log at server:
Program FilesMicrosoft SQL ServerMSSQL.3Reporting ServicesLogFilesReportServerService__01_19_2010_01_34_05.log but not able to deduce any fruitful exception.
Trace value in config file is set to :< add value="3" />
Either disable the sort_button till the report loads completely. Or show the progressbar indicator till the report loads completely.I am not able to find out the solution for: how to achieve any of the two ways mentioned above.
I'm trying to implement uploadify, but for some reason I'm failing at getting the event onComplete.My code looks like this so far and the uploadify can upload the files to the folder that I've selected.
Sys.Application.add_load(AddAdvertise); function AddAdvertise() { $('.flUploadImage').uploadify({
I have a submit button that when I click it, I need it to run a script first prior to loading he ConfirmButtonExtender. Can I change the TargetControlID to a sub or a function and after that function is executed, then call ConfirmButtonExtender, or attach it so when the second function is called, it will pop the dialog box up first and then run if OK is clicked.
To me this should be much easier, but I can't seem to retain the values that are put in the Insert template upon a validation failure or when the sql fails. This will prevent the user from having to retype everything agin in the event of a failure.
As you can see I am using the Sub Insert_Click and not using an insert through the wizard. so the fields are unbound textboxes on the form. There are 2 dropdowns that provide choices for the other fields.
I pasted in the code using the text only option becuase the format was getting messed up. I probably need more background on why the fields are blanking out.
< ajaxToolkit:ConfirmButtonExtender ID="ConfirmButtonExtenderDelete" runat="server" ConfirmText="Are you sure you want to delete this Foreign Exchange Allowance?" TargetControlID="ImageButtonDelete" ConfirmOnFormSubmit="true"> </ajaxToolkit:ConfirmButtonExtender>
How to put below template label value in confirm text
Is there any way of using ajax confirm button for dynamically created hyper link control?
I am using data in table and each row has dynamically created link control, so if the user click on the link then it will delete the row from database. Is there any way if i can use ajax confirm button for hyper link?
I have one text box with a range validator, and a submit button.I also have a confirmbuttonextender and modalpopup.The popup still displays even if there is a form error!
How does this work with validation, since the popup displays when the button is pressed and not when the form is validated correctly?
In the save button click I have the following code.
[Code]....
[Code]....
ModelPopupExtender pops up immediately after clicking the Save button without executing AddClient.How do I make it to pop up after AddClient has been executed?
I have created an asp .net ajax control, meaning i have a javascript object linked to this control. In that object as usual i have 2 crucial methods: initialize and dispose.
[Code]....
In internet explorer dispose method is invoked every time user leaves the page, even when closing the browser. But not in chrome, its invoked by refreshing the page but not by closing the tab or window. Do you know how to achieve this?
I am using following server side code to save the data from ASP.NET Control toolkit Editor to the database It follows with the HTML Code The problem is that, data is saved successfully. But it is saved twice. Main problem is this server side event is fired twice. How can i prevent it from firing twice?
Server side code Imports System.Data.SqlClient Partial Class Administrator_Calendar Inherits System.Web.UI.Page Protected Sub BtnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnAdd.Click Try Dim dbobj As New db Dim i As Integer = 0 Dim rdr As SqlDataReader = dbobj.selectQuery("select max(srno) from calendar") If rdr.HasRows = True Then rdr.Read() i = rdr.Item(0) End If rdr.Close() dbobj.insertQuery("insert into calendar values (" & i + 1 & " , '" & Me.Txt_dt.Text & "' , '" & Me.Editor1.Content & "')") dbobj = Nothing Catch ex As Exception End Try End Sub End Class HTML CODE <%@ Page Language="VB" MasterPageFile="~/MasterPages/Admin_AftrLogin.master" AutoEventWireup="false" CodeFile="Calendar.aspx.vb" Inherits="Administrator_Calendar" Title="Excel Crop Care Ltd. / Administration Section / Manage Calendar..." %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit.HTMLEditor" TagPrefix="cc2" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server"> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" runat="Server"> <div> <cc1:TabContainer ID="TabContainer1" runat="server" ActiveTabIndex="0"> <cc1:TabPanel runat="server" HeaderText="Selected Dates" ID="TabPanel1"> <ContentTemplate> <asp:GridView ID="Gridview1" runat="server" AutoGenerateColumns="False" DataKeyNames="srno" DataSourceID="SqlDataSource1"> <Columns> <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowInsertButton="True"> <ItemStyle Width="20%" /> </asp:CommandField> <asp:BoundField DataField="srno" HeaderText="No." ReadOnly="True" SortExpression="srno"> <ItemStyle Width="10%" /> </asp:BoundField> <asp:BoundField DataField="date" HeaderText="Date" SortExpression="date"> <ItemStyle Width="30%" /> </asp:BoundField> <asp:BoundField DataField="description" HeaderText="Description" SortExpression="description" /> </Columns> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DataConnectionString %>" SelectCommand="SELECT * FROM [calendar]" UpdateCommand="Update calendar set date=@date,description=@description where srno=@srno" DeleteCommand="Delete from calendar where srno=@srno"></asp:SqlDataSource> </ContentTemplate> </cc1:TabPanel> <cc1:TabPanel ID="TabPanel2" runat="server" HeaderText="Add New"> <ContentTemplate> <table> <tr> <td width="30%"> Date : </td> <td> <asp:TextBox ID="Txt_dt" runat="server" Height="16px" Width="170px" CausesValidation="True" Font-Names="Verdana" ForeColor="#666666"></asp:TextBox> <asp:ImageButton runat="Server" ID="Image1" ImageUrl="../Images/Calendar_scheduleHS.png" AlternateText="Click to show calendar" /><br /> <cc1:CalendarExtender ID="Txt_dt_CalendarExtender" runat="server" DaysModeTitleFormat="dd/MM/yy" Enabled="True" Format="dd/MM/yy" TargetControlID="Txt_dt" PopupButtonID="Image1"> </cc1:CalendarExtender> <cc1:TextBoxWatermarkExtender ID="Txt_dt_TextBoxWatermarkExtender" runat="server" Enabled="True" TargetControlID="Txt_dt" WatermarkText="DD/MM/YY"> </cc1:TextBoxWatermarkExtender> <cc1:MaskedEditExtender ID="Txt_dt_MaskedEditExtender" runat="server" MaskType="Date" CultureDateFormat="dd/MM/yy" Enabled="True" TargetControlID="Txt_dt" Century="2000" UserDateFormat="DayMonthYear" Mask="99/99/99"> </cc1:MaskedEditExtender> </td> </tr> <tr> <td colspan="2"> <asp:Label ID="Lbl_msg" runat="server" Text="Enter description in the editor below :"></asp:Label> </td> </tr> <tr> <td colspan="2"> <cc2:Editor ID="Editor1" runat="server" Height="350px" /> </td> </tr> <tr> <td colspan="2" align="center"> <asp:Button ID="BtnAdd" runat="server" Text="Add" OnClick="BtnAdd_Click" Width="75px" CssClass="btn" /> <asp:Button ID="Btn_Rem" runat="server" Text="Remove" OnClick="BtnAdd_Click" Width="75px" CssClass="btn" /> </td> </tr> </table> </ContentTemplate> </cc1:TabPanel> </cc1:TabContainer> </div> </asp:Content>
In a button click, I need to be able to hide my ModalPanel and then continue running other code server-side. I currently have it this way:
[Code]....
It hides the panel at the of the event handler because that's when the page posts back. So what can I do to hide the panel and then continue running the rest of the server-side code?
Basically what I'm trying to do is the following:
1. Button_display in my webform simply displays my UpdatePanel via ModalPopupExtender.
2. Button_closePanel_Click will hide my UpdatePanel and then run some server-side code, which would display my UpdateProgress control.
For some reason when I use the AsyncFileUpload it fails on the first attempt. All upload attemps that follow are always succssesful unless I close the browser and start again.
I tried this in many scenarios and everytime the ViewState is disabled page-wide, NoBot raises an internal NullReferenceException and always returns InvalidBadSession. I suspect that you are referencing the ViewState and it returns a null value which is then used. It's probably a good idea to think about a way that avoids using ViewState.
I then made a reference to the AjaxControlToolkit.dll where it created a new Bin folder and added a whole load of folders below plus the dll file apprears.I've also installed the AJAX tool bar where all the Ajax controls are available.
Then on a new page I added the Editor control which rendered the page as the following
this is my first post in this forum, even though I often search for helps and clarifications over its threads. And many times they are definitely useful!!I had a <asp:ScriptManager> in may MasterPage, wich was used to manage various UpdatePanels I have either in Content pages or in MasterPage.Today I inserted a CalendarExtender, so I had to replace the ScriptManeger with the AJAX ToolkitScriptManager.
At the beginning it seemed to work fine (the calendar pop up and others controls got updated properly). Then I noticed that the nodes in various TreeView are not expanding any more. The TreeViews objects are placed inside an UpdatePanel, in order to expand each node without refreshing the whole content page. And, while a node expands, an UpdatePanel containing a GridView in the content page gets updated.Now, with the new ScriptManager they do not expand, but when clicking on a single node the GridView is updated properly.Here some pieces of code:
[Code]....
Controls registered as triggers.I know I can use only one script manager per page,