Wierd Behavior of __doPostBack

P

paul reed

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.__EVENTTARGET.value = eventTarget.split("$").join
(":");

I have enclosed the entire __doPostBack function below.

I DO NOT get this error when running on my development
machine...anyone 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(eventTarget, eventArgument) {
var theform;
if (window.navigator.appName.toLowerCase
().indexOf("netscape") > -1) {
theform = document.forms["Form1"];
}
else {
theform = document.Form1;
}
theform.__EVENTTARGET.value =
eventTarget.split("$").join(":");
theform.__EVENTARGUMENT.value =
eventArgument;
theform.submit();
}
 
B

Bassel Tabbara [MSFT]

Hello Paul,
The way you are implementing the postback is highly not recommended.

This is accomplished by using two methods:
- RegisterClientScriptBlock
- GetPostBackEventReference

RegisterClientScriptBlock 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
RegisterClientScriptBlock
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/
frlrfSystemWebUIPageClassRegisterClientScriptBlockTopic.asp


GetPostBackEventReference 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
GetPostBackEventReference
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/
frlrfsystemwebuipageclassgetpostbackeventreferencetopic.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="WebForm1.aspx.vb" Inherits="CustomerDemosVB.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
Please Click on the DropDown List <br>
<asp:dropdownlist onclick="myfunc()" id="DropDownList1" runat="server"
AutoPostBack="True">
<asp:ListItem Value="One">One</asp:ListItem>
<asp:ListItem Value="Two">Two</asp:ListItem>
<asp:ListItem Value="Three">Three</asp:ListItem>
<asp:ListItem Value="Four">Four</asp:ListItem>
</asp:dropdownlist>

</form>
</body>
</HTML>

=================
WebForm1.aspx.vb
=================

Public Class WebForm1
Inherits System.Web.UI.Page
Protected WithEvents LinkButton1 As System.Web.UI.WebControls.LinkButton
protected WithEvents DropDownList1 as
System.Web.UI.WebControls.DropDownList

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

Page.RegisterClientScriptBlock("ClientScript","<script
language=javascript>function myfunc(){alert('DropDown clicked. Now calling
server-side function');" + _
Page.GetPostBackEventReference(DropDownList1) + "}</script>")

if Page.IsPostBack
Response.Write("This is server side code. <br>")
End if
End Sub

Private Sub LinkButton1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles LinkButton1.Click
Response.Write("This is server side code. You passed the value ["
& Request.Form("__EVENTARGUMENT") & "]<br>")

End Sub
Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
DropDownList1.SelectedIndexChanged
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" <[email protected]>
| Sender: "paul reed" <[email protected]>
| Subject: Wierd Behavior of __doPostBack
| Date: Mon, 7 Jul 2003 22:47:01 -0700
| Lines: 42
| Message-ID: <[email protected]>
| 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++WnFQoWhuBqxOXLXqQ==
| X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4910.0300
| Newsgroups: microsoft.public.dotnet.framework.aspnet
| Path: cpmsftngxa09.phx.gbl
| Xref: cpmsftngxa09.phx.gbl microsoft.public.dotnet.framework.aspnet:32914
| NNTP-Posting-Host: TK2MSFTNGXA08 10.40.1.160
| X-Tomcat-NG: microsoft.public.dotnet.framework.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.__EVENTTARGET.value = eventTarget.split("$").join
| (":");
|
| I have enclosed the entire __doPostBack function below.
|
| I DO NOT get this error when running on my development
| machine...anyone 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(eventTarget, eventArgument) {
| var theform;
| if (window.navigator.appName.toLowerCase
| ().indexOf("netscape") > -1) {
| theform = document.forms["Form1"];
| }
| else {
| theform = document.Form1;
| }
| theform.__EVENTTARGET.value =
| eventTarget.split("$").join(":");
| theform.__EVENTARGUMENT.value =
| eventArgument;
| theform.submit();
| }
|
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,011
Latest member
AjaUqq1950

Latest Threads

Top