Monday, September 26, 2011

A simple example GetPostBackEventReference

You can copy the code and test. Web page:
Code:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Pass Javascript Variables to Server</title>
     <script type="text/javascript">
         function SetHiddenVariable()
         {
            var jsVar = "dotnetcurry.com";
            __doPostBack('callPostBack', jsVar);
        }
        function Submit_Click() {
            var text = document.getElementById("TextArea1");
            __doPostBack("btnSubmit", text.value);
            return false;
        }
    </script>
</head>
 
<body>
    <form id="form1" runat="server">
    <div>   
        <asp:TextBox ID="txtJSValue" runat="server"></asp:TextBox><br />
        <textarea id="TextArea1" cols="20" rows="2"></textarea><br />
        <asp:Button ID="btnJSValue" Text="Click to retreive Javascript Variable"
            runat="server"/><br />
        <asp:Button ID="Button1" runat="server" Text="Button"  OnClientClick="return Submit_Click();" UseSubmitBehavior="false" />
    </div>
    </form>
</body>
</html>
Code Behind:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        this.ClientScript.GetPostBackEventReference(this, "arg");
        if (IsPostBack)
        {
            string eventTarget = this.Request["__EVENTTARGET"];
            string eventArgument = this.Request["__EVENTARGUMENT"];

            if (eventTarget != String.Empty && eventTarget == "callPostBack")
            {
                if (eventArgument != String.Empty)
                {
                    txtJSValue.Text = eventArgument;
                    //btnJSValue.Enabled = false;
                }
            }
            else if (eventTarget != String.Empty && eventTarget == "btnSubmit")
            { txtJSValue.Text = eventArgument; }
        }
        else
        {
            btnJSValue.Attributes.Add("onClick", "SetHiddenVariable();");
        }
    }
}