Hello Paul,
The way you are implementing the postback is highly not recommended.
This is accomplished by using two methods:
- RegisterClientS criptBlock
- GetPostBackEven tReference
RegisterClientS criptBlock allows ASP.NET server controls to emit
client-side script blocks in the Page.
The client-side script is emitted just after the opening tag of the Page
object's <form runat= server> element.The script block is
emitted as the object that renders the output is defined, so you must
include both tags of the <script> element.
Please refers to the following documentation regarding
RegisterClientS criptBlock
http://msdn.microsoft.com/library/de...us/cpref/html/
frlrfSystemWebU IPageClassRegis terClientScript BlockTopic.asp
GetPostBackEven tReference obtains a reference to a client-side script
function that causes, when invoked, the server to post back to the page.
Please refers to the following documentation regarding
GetPostBackEven tReference
http://msdn.microsoft.com/library/de...us/cpref/html/
frlrfsystemwebu ipageclassgetpo stbackeventrefe rencetopic.asp
I am including below the sample where the DropDown List Click Client Event
will Post to the server and then a call a server side code.
===============
WebForm1.aspx
===============
<%@ Page Language="vb" AutoEventWireup ="false"
Codebehind="Web Form1.aspx.vb" Inherits="Custo merDemosVB.WebF orm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1 </title>
<meta name="GENERATOR " content="Micros oft Visual Studio.NET 7.0">
<meta name="CODE_LANG UAGE" content="Visual Basic 7.0">
<meta name="vs_defaul tClientScript" content="JavaSc ript">
<meta name="vs_target Schema"
content="http://schemas.microso ft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING= "GridLayout ">
<form id="Form1" method="post" runat="server">
Please Click on the DropDown List <br>
<asp:dropdownli st onclick="myfunc ()" id="DropDownLis t1" runat="server"
AutoPostBack="T rue">
<asp:ListItem Value="One">One </asp:ListItem>
<asp:ListItem Value="Two">Two </asp:ListItem>
<asp:ListItem Value="Three">T hree</asp:ListItem>
<asp:ListItem Value="Four">Fo ur</asp:ListItem>
</asp:dropdownlis t>
</form>
</body>
</HTML>
=============== ==
WebForm1.aspx.v b
=============== ==
Public Class WebForm1
Inherits System.Web.UI.P age
Protected WithEvents LinkButton1 As System.Web.UI.W ebControls.Link Button
protected WithEvents DropDownList1 as
System.Web.UI.W ebControls.Drop DownList
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
<System.Diagnos tics.DebuggerSt epThrough()> Private Sub
InitializeCompo nent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArg s) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeCompo nent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArg s) Handles MyBase.Load
Page.RegisterCl ientScriptBlock ("ClientScript" ,"<script
language=javasc ript>function myfunc(){alert( 'DropDown clicked. Now calling
server-side function');" + _
Page.GetPostBac kEventReference (DropDownList1) + "}</script>")
if Page.IsPostBack
Response.Write( "This is server side code. <br>")
End if
End Sub
Private Sub LinkButton1_Cli ck(ByVal sender As System.Object, ByVal e As
System.EventArg s) Handles LinkButton1.Cli ck
Response.Write( "This is server side code. You passed the value ["
& Request.Form("_ _EVENTARGUMENT" ) & "]<br>")
End Sub
Private Sub DropDownList1_S electedIndexCha nged(ByVal sender As
System.Object, ByVal e As System.EventArg s) Handles
DropDownList1.S electedIndexCha nged
Response.Write( "This is server side code. You passed the value [" &
Request.Form("_ _EVENTARGUMENT" ) & "]<br>")
End Sub
End Class
Please let me know if you have any questions regarding this.
Thanks,
Bassel Tabbara
Microsoft, ASP.NET
This posting is provided "AS IS", with no warranties, and confers no rights.
--------------------
| Content-Class: urn:content-classes:message
| From: "paul reed" <pr****@jackson reed.com>
| Sender: "paul reed" <pr****@jackson reed.com>
| Subject: Wierd Behavior of __doPostBack
| Date: Mon, 7 Jul 2003 22:47:01 -0700
| Lines: 42
| Message-ID: <02************ *************** *@phx.gbl>
| MIME-Version: 1.0
| Content-Type: text/plain;
| charset="iso-8859-1"
| Content-Transfer-Encoding: 7bit
| X-Newsreader: Microsoft CDO for Windows 2000
| Thread-Index: AcNFFFok0Du++Wn FQoWhuBqxOXLXqQ ==
| X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4910.0300
| Newsgroups: microsoft.publi c.dotnet.framew ork.aspnet
| Path: cpmsftngxa09.ph x.gbl
| Xref: cpmsftngxa09.ph x.gbl microsoft.publi c.dotnet.framew ork.aspnet:3291 4
| NNTP-Posting-Host: TK2MSFTNGXA08 10.40.1.160
| X-Tomcat-NG: microsoft.publi c.dotnet.framew ork.aspnet
|
| Hello,
|
| I am having some weird behavior between two machines...one
| which is running the 1.1 framework and one which is
| running 1.0. After opening a child form from a parent...I
| update the database then call the __doPostBack function of
| the window.opener. This has been working like a charm for
| the last several months. Our ISP where we run the .NET app
| recently upgraded to 1.1 of the framework. When I run my
| app at the ISP...the __doPostBack function in the
| window.opener dies with an "Undefined is not an object or
| is NULL" message on this line:
|
| theform.__EVENT TARGET.value = eventTarget.spl it("$").join
| (":");
|
| I have enclosed the entire __doPostBack function below.
|
| I DO NOT get this error when running on my development
| machine...anyon e have any ideas at all...I am at a loss.
| When I deploy I am compiling against the 1.0
| framework...so can't see how...even if the ISP is running
| 1.1 as well...that it would matter.
|
| Paul
|
| !--
| function __doPostBack(ev entTarget, eventArgument) {
| var theform;
| if (window.navigat or.appName.toLo werCase
| ().indexOf("net scape") > -1) {
| theform = document.forms["Form1"];
| }
| else {
| theform = document.Form1;
| }
| theform.__EVENT TARGET.value =
| eventTarget.spl it("$").join(": ");
| theform.__EVENT ARGUMENT.value =
| eventArgument;
| theform.submit( );
| }
|