How to use __doPostBack()
I'm trying to create an asyncrhonous postback in ASP.NET using __doPostBack()
, but I have no idea how to do it. I want to use vanilla JavaScript.
Something simple like a button click can cause the __doPostBack()
event to fire. I'm just trying to learn how the mechanism works.
You can try this in your web form with a button called btnSave for example:
<input type="button" id="btnSave" onclick="javascript:SaveWithParameter('Hello Michael')" value="click me"/>
<script type="text/javascript">
function SaveWithParameter(parameter)
{
__doPostBack('btnSave', parameter)
}
</script>
And in your code behind add something like this to read the value and operate upon it:
public void Page_Load(object sender, EventArgs e)
{
string parameter = Request["__EVENTARGUMENT"]; // parameter
// Request["__EVENTTARGET"]; // btnSave
}
Give that a try and let us know if that worked for you.
This is also a good way to get server-side controls to postback inside FancyBox and/or jQuery Dialog. For example, in FancyBox-div:
<asp:Button OnClientClick="testMe('param1');" ClientIDMode="Static" ID="MyButton" runat="server" Text="Ok" >
</asp:Button>
JavaScript:
function testMe(params) {
var btnID= '<%=MyButton.ClientID %>';
__doPostBack(btnID, params);
}
Server-side Page_Load:
string parameter = Request["__EVENTARGUMENT"];
if (parameter == "param1")
MyButton_Click(sender, e);
Here's a brief tutorial on how __doPostBack()
works.
To be honest, I don't use it much; at least directly. Many server controls, (e.g., Button
, LinkButton
, ImageButton
, parts of the GridView
, etc.) use __doPostBack
as their post back mechanism.