C# - How To Register A Javascript Function To Run With Every Postback
Mar 17, 2010
I have a treeview in a user control. I need to run a javascript function with every asynch postback to scroll the div it's in to the right position. I've got it working, but I think there has to be a "cleaner" way to do it. In the Page_Load function of the control, I have the following code. Is there a better way to do it?
I have an ASP.NET page with two instances of the same Web User Control (a simple WYSIWYG editor). On submit, the WUCs do a little JavaScript magic and then proceed with a normal postback.
The first instance seems to be working, but the second fails to post changes back to the server (it reverts to the original, and posts that). I believe the problem is that the JS only fires for the first WUC. I've traced that to the following code, from the generated client-side source:
function WebForm_OnSubmit() { prepHtml('AddEditPopup1_ctlEditorQuestion_txtEdit','AddEditPopup1_ctlEditorQuestion_divEdit', 'AddEditPopup1_ctlEditorQuestion_divHT' ); //snip... }
The problem seems to be that there should be two calls to prepHtml: one for the ctlEditorQuestion instance of the WUC, and one for the ctlEditorAnswer instance.
Instead, there's only the one for ctlEditorQuestion. Both controls are registering the OnSubmit event, but one of them overwrites the other.The prepHtml call is registered from the WUCs' C# code at runtime:
I should point out that I didn't write this control myself, and I've never seen this kind of runtime registration of OnSubmit JS code before. Page.ClientScript.RegisterOnSubmitStatement is totally new to me. I need to register both prepHtml calls so they run sequentially. Is this possible? I'm open to alternatives to Page.ClientScript.RegisterOnSubmitStatement, so long as the code still gets fired on submit.
I have a simple form (textbox, submit button) which is wrapped in an update panel.
[Code]....
I type some text in the textbox, click submit, then the server creates a database record and returns an object, which has properties like ID, Name, URL, Blah, etc. These are the values that the script requires.
So if i were to call a web service from the client-code, in order to get the values that were just created, i would need to do some hacks (get last record modified that has the value of the textbox). Not ideal, and neither is two AJAX calls for one form post. (update panel postback, then web service call).
I'm using Javascript to create a DIV element and open up a new page by using onclientclick. This works great. Now, I need to write to it from the server side and this element must be created before it is posted back.
How do I get the javascript to execute before the postback?
Currently, I have to press the button twice because the element doesn't exist to write too on the first click.
To be clear, I need this to execute before the "OnClick" of the button.
Update: It looks like the Javascript function is called before the postback but the element is not updated until I run the second postback.
Update: Unfortunately it is a bit more complicated then this.
I'm creating a div tag in javascript to open a new window. Inside the div tag, I'm using a databinding syntax <%=Preview%> so that I can get access to this element on the server side. From the server side, I'm injecting the code.
I'm thinking this may be a chicken-egg problem but not sure.
UPDATE!
It is not the Javascript not running first. It is the databinding mechanism which is reading the blank variable before I'm able to set it.
The problem is that the Javascript function is called only one time, on the very first page load. I want it to be called on every post back. for example on every button click
jsText is nothing but Name and Value pair strings. Example : "KEY1:txtName, KEY2:txtDOB" In UserControl, I am calling the above Class method to pass all the textboxes and calling the JS file to validate the registered controls. Then, I am calling that Usercontrol in ASPX page. Here I am unable to validate the controls as it is saying "KEY is undefined".
In Asp.net how many ways we have to add javascript programmatically or register when we use ajax or normal page postback in 3.5 and 4.0 versions of asp.net
How do i add my javascript file as an embeded resource to the page after the ajax javascript already on the page? NB want to do this part dynamically to have code wrapped up in usercontrol.
<asp:LinkButton CssClass="button" ID="btnApply" runat="server" OnClick="btnApply_Click()" OnClientClick="Apply1('btnApply')" > hi ihave this functin in .vb file Protected Sub btnApply_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnApply.Click end sub
i have a javascript color picker i can get it working fine in a aspx page, but i am unable to get it working in a usercontrol inside a update panel. I have tried using the following but i still cannot get it to workm the js file can be viewed at [URL]
It renders Fine with Register symbol after the text "My Test Application Name" on start of the page but on any postback the title turn into My Test Application NameŽ Kindly let me know what can i do with minimal effort to fix this issue
how can i use multi javascript files with RegisterClientScriptInclude method in custom server controls. when i call two or more RegisterClientScriptInclude method, this method registers only one of the javascript files.
I am trying to replace the JavaScript onclick event handler in ASP.NET that is added to a button control when using validation controls. This is what is output into the HTML from ASP.NET in this scenario:
I have looked pretty estensively, and unfortunately there doesn't seem to be a way to modify the function server side before it is injected into the page.
Since I am developing a control and desire it to be non-invasive and self contained, and I am interested in obtaining the validationGroup parameter of the WebForm_PostBackOptions object, it seems that the easiest solution would be to use JavaScript to replace the WebForm_DoPostBackWithOptions function name with my custom wrapper function and leave all of the rest of the parameter information intact - then I can extract the information I am interested in, call my custom functions, and then forward the call on to WebForm_DoPostBackWithOptions.
NOTE: I am using jQuery to build my custom function, so if there is an easier way to do this with jQuery it is an option I will consider.
Here is the code I tried to replace the onclick event handler (not working):
Using alert(), I verified that the text is being changed correctly, however whether or not I use the eval() function, the onclick handler doesn't seem to recognize it as JavaScript.
I thought of using a regular expression to get the validationGroup value, but this seems like it will be far more elegant and flexible if I can get it working...
Note: If there is a way for my control to interrogate the page it is on to find all of the buttons that will post back (regardless of what type of buttons they are) so I can retrieve the property server-side, this is also something I will consider.
In asp.net page, How can i call the javascript methods for form processing-submitting if the user browser supports javascript and use code behind events if the browser does not support javascript.I have the javascript code to send the form data to an ajax server page using jquery. Don't know how to invoke the needed one based on the browsers javascript availability
The script are put in the following and the block is in the .ascx page.
<script type="text/javascript"> </script>
However, the function UserControlNameInit() does not run when the page loads. It is showing in the page source. I can still call this function through FireBug console by manually typing the name of the function.
I did the same way with other user controls, and it works. Just 1-3 user controls are not working...
I'm at my wits end on this one looked/Searched/Played/Experimented and I need your help if you can.This page is going to be primarily used on a mobile device using Win Mobile 5 Need to Accomplish:Prevent Postback(serverside) of Page using JavaScript (Postback's slow down the page on mobile device)