ASP.NET button click fire jQuery - asp.net

I have a jQuery Pager control, for each page there is a set of textboxes and a submit button. When this submit button is clicked I want it to fire off some jQuery to update the controls on the front end (i.e. current page, set visibility of controls etc). The button is an asp.net web forms postback button.
Does anyone know any way of doing this?
Merry Christmas!

Inject js from code-behind after your postback success like:
string script = "$(function(){setPage(\"" + yourpagenumber+ "\");});";
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "Pager", script, true);
And in the js you will have a setPage function that does the job of setting page with your jquery pager plugin.
function setPage(pagenumber){
alert(pagenumber);
//do your page setting here
}
Note: you can use Page.ClientScript.RegisterStartupScript if that fits your needs but the idea remains same.

Don't use a submit button, use an input of type button with an onclick event instead.

Use the OnClientClick attribute of the asp:button i.e.
OnClientClick="JQueryFunction();return false;"
for no postback and
OnClientClick="JQueryFunction();return true;"
for a postback. I'm assuming that that JQueryFunction() returns true.

Related

Disable Postback on asp.net Button Click

I would like to disable postback on a onClick event of a button.
I did some research online and most are using onClientClick and using javascript. Is there a way to call a asp.net function "btnCommit_Click" on the onClick instead of using onclientclick and using javascript?
If not, how would I be able to incorporate a asp.net function with javascript?
<asp:Button ID="btnCommit" runat="server" Text="Save" TabIndex="5"
onclick="btnCommit_Click" />
UPDATED
I have a GridView which contains checkboxes, once the user makes their changes and click on a "Save Button" a Post Back occurs and I loose all the selections made to the checkboxes I was thinking of disabling the postback on the OnClick Event of the button would solve that issue...
I didn't exactly get what you are trying to achieve. But if you want to have both js and server-side to gether on an asp.net button, use OnClientClick and Onclick together. if you want to cancel the postback, return false in the OnClientClick js function. This way, the server-side OnClick event will never be called. otherwise, return true and the postback will occur.
Update:
Based on the comments and you update, if you want to persist the state of checkboxes in your gridview, you have to avoid overwriting anything that can affect you controls' states in the Page_Load event. What this simply means that you have to check for (IsPostback) in Page_Load event, and if it's true, you shouldn't do anything on your UI elements or you will lose their states.
Sounds like your problem is not putting your databinding and page setup inside a check for first page load.
http://msdn.microsoft.com/en-us/library/system.web.ui.page.ispostback.aspx
private void Page_Load()
{
if (!IsPostBack)
{
// Do your databinding etc here to stop it occuring during postback
}
}
I have a GridView which contains checkboxes, once the user makes their
changes and click on a "Save Button" a Post Back occurs and I loose
all the selections made to the checkboxes
You have to keep the Page_Load under Page.IsPostback during is's value to false like below..
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//Your code
}
}
This will not cause to loose you grid checkbox selection made after clicking the button.
Your GridView EnableViewState must be True
Your template fields must be in designer page
While you can use VBScript with Internet Explorer only (I don't believe any other browsers support it), it is considered bad practice. To run VB/C#.net, you have to do some sort of postback/callback to the server. Other than that, use Javascript.
Dont use Autopostback=true to any form controls,if you want to send the form data to the server side function
*Form Page*
asp:Button ID="btn" runat="server" Text="Post Scrap" OnClick="btn_Click"
*Server side*
Sub btn_Click()
//code here
End Sub
In most of my cases, what I do is convert the button to an
<input type='button' />
so that I can access it via javascript or jquery. This may not be your case tough.
If you dont want to page load or postback a page when click on asp button, you just have to change a property called CausesValidation to false.

TextBox keydown event at server side in asp.net

i have a textbox on a page, now whenever any age number is entered in that page, that page should be loaded in my datalist, i have created rest of the thing, but i am not getting how to trigger the textbox onkeydown event from asp.net, i know working with that from javascript, but the problem is i have below things done in that function:
it applies the currentpage value to the static variable from textbox
it binds the datalist
it enable disable the next previous buttons accordingly
and i dont think this i can do from javascript, anyone have any resolution, how this could be achieved from server side, onkeydown event
You can capture the keydown event in a javascript function then do a AJAX call to the server. If this does not suit you, then you could try manually do postback in javascript.
So in your textbox:
mytextBox.Attributes.Add("onkeydown", "return doDataListBind()");
Now in the javascript function:
function doDataListBind()
{
__doPostBack("myTextBox"); // etc, etc
// some other code here...
}
More info can be found here:
http://geekswithblogs.net/mnf/archive/2005/11/04/59081.aspx
http://www.asp.net/ajaxlibrary/AjaxControlToolkitSampleSite/
Try looking into or using either:
AJAX Control Toolkit, or
JQuery Autocomplete Plugin
Alternatively you could try to call _postback() function from a client side event/function for your textbox in javascript

How to show javascript alertbox on button click event in asp.net webpage if textbox1.text=""?

How to show javascript alertbox on button click event in asp.net webpage if textbox1.text="" ?
What you must do is attach a script to the button's client click event. In that script, check the value of textbox1. If it's empty, you show the alert and return false to prevent the form from submitting (prevent postback).
To do so, in Page_Load, insert the following:
if (!Page.IsPostBack)
{
string script = string.Format("if (document.getElementById('{0}').value == '') {{ alert('Textbox is empty'); return false; }}", textbox1.ClientID);
btnMyButton.Attributes.Add("onclick", script);
}
Of course, you could encapsulate the script in a reusable method, use jquery to check the value, but this is the big idea.
Are you talking about a server-side button click event? If so, then you can register javascript to run after the page is loaded, but you cannot execute javascript on the server in the context of the browser.
If you meant button click on client side you can use OnClientClick event of the asp.net Button Control. Check the link.
And if you simply want it for Validation purpose only then you can use RequiredFieldValidator and ValidationSummary Controls.

Conditionally trigger a full page postback from a link button inside an update panel

How do I conditionally trigger a full page postback from a link button inside of an update panel?
I have a custom control that contains its own updatepanel with a link button nested inside of it. When the link button is pressed I want its event handler to have the option of either letting the control update as normal or doing a full postback on the page.
Here is the control hierarchy:
Page
Custom Control
UpdatePanel
LinkButton
Event handler Pseudo code:
LinkButton Click Handler Begin
If is a partial post back AND a full postback is needed
Page.DoFullPostback
End If
End Handler
Note: I aways need the partial postback to happen. I was considering injecting a __DoPostback in the controls markup but this seems hacky to me.
Thanks for your help!
Sorry, I'm not familiar with the VB, so my example source will be written in C#:
protected void btnLink_Click(object sender, EventArgs e)
{
bool isAsync = ScriptManager.GetCurrent(Page).IsInAsyncPostBack;
bool postBackIsNeeded = true;
if (isAsync && postBackIsNeeded)
{
ScriptManager.GetCurrent(Page).RegisterPostBackControl(btnClick);
string postback = Page.ClientScript.GetPostBackEventReference(
btnClick,
string.Empty
);
ScriptManager.RegisterStartupScript(
btnClick,
btnClick.GetType(),
"postback",
postback,
true
);
}
}
The main idea is to change the type of postback of your LinkButton control. If neccessary it should be changed to full postback instead of partial during the async postback event. Right after this, another postback script should be generated and it should be executed as soon as the page will be returned to client.
And the last thing - use loop detection condition (if (isAsync && postBackIsNeeded) in my case) otherwise postback will be infinite.
The easiest approach is to create a hidden button somewhere on your page, outside of any UpdatePanels. When you need to do a full postback, use JavaScript to either click the button or issue __doPostback() to it. You can achieve a partial postpack programmatically in JavaScript by calling __doPostback() on an UpdatePanel itself, or to a button inside one.

Use asp.net AJAX from javascript

This is probably a simple question.
I use ASP.NET ajax toolkit and Jquery. I want to call a server-side function/method from Javascript and have it update a control. Can i do this?
Client-side
send_request(foobar,args);
Server-side
private void foorbar(){
Label1.Text = "updated";
}
Do you want it to fire a server-side method and update a server-side control on the page? You can create a ASP.NET UpdatePanel, let's say there is a button1 inside, and from your JQuery code, write this.
function OnClick()
{
__doPostBack(button1.ClientID, "argument")
}
and in your server side code, Page_Load event, you will find the EVENTTARGET and EVENTARGUMENT in the REQUEST variable, which contains the information you just postback, you can then update the control in the UpdatePanel itself as long as the control is within the UpdatePanel, it will be handled properly by ASP.NET AJAX.
More details here
http://www.dotnetspider.com/resources/16920-Post-back-gets-demystified-doPostBack-defined.aspx
Yes that can be done Client Callback
You could take a look at ASP.NET Page Methods.
jQuery.ajax({
url:'url to call', //usually webservices in asp.net
dataType:'json',
type:'POST', //(asp.net werbservices by default accepts POST request only)
success:function(data){
//do some thing with this data, like will dom elements etc
}
});
#smkngspcmn:
I placed everything inside an update panel and did something like $('#Year').change(function() { __doPostBack("submit", ""); }); That does do a full post back without Ajax. What am i doing wrong? Should i place the above script inside the update panel as well?
The first argument to __doPostBack() should be the UniqueID of a server-side control inside the UpdatePanel. For example, you can put a hidden button inside the UpdatePanel:
<asp:Button ID="HiddenButton" runat="server"
style="display:none" OnClick="HiddenButton_Click" />
When the button is rendered on the page, you can take the name attribute of the <input type="submit"> element that represents the submit button and use it for the first argument to _doPostBack(). In this way, whenever your script runs it the UpdatePanel will make an asynchronous postback and the HiddenButton_Click event handler will be fired.

Resources