UpdatePanel is doing full postback when it should not

T

TomK

I have a ASP.NET 2.0 web application that was written using traditional
postbacks.
I am in the process of Ajaxifying some pages.

PROBLEM: Update panel is always causing postbacks

I have 1 test page that does partial postbacks no problem. The second page
is a legacy page that I have wrapped some controls in UpdatePanels and
followed a similar model as the working test page. Whenever the UpdatePanel
trigger is fired I keep getting full postbacks even though I have
EnablePartialRendering=true.

I know it has to be something at the page level since the test page works
fine.

Here are some sample snippets:

<asp:ScriptManager runat="server" ID="ctlScriptManager"
EnablePartialRendering="true" >
</asp:ScriptManager>
<script type="text/javascript" language="javascript">
try
{
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(InitializeRequest);
prm.add_beginRequest(doNothing);
prm.add_pageLoading(doNothing);
prm.add_pageLoaded(doNothing);
prm.add_endRequest(EndRequest);
}catch(e)
{
//alert("There was an error setting up ScriptManager");
}

function InitializeRequest(sender, args)
{

alert('InitializeRequest');
debugger
if (prm.get_isInAsyncPostBack())
{
alert('cancelled double request');
args.set_cancel(true);
}else
{
if (!OnSubmitValidation())
{
alert('handled validation error');
args.set_cancel(true);
prm._originalDoPostBack(args._postBackElement.id,'');
}
}
}

function doNothing(sender, args)
{
}

function EndRequest(sender, args)
{
DisableOnSubmitValidation();

// TODO: handle timeout errors, and revert to fullpage postback
if (args.get_error() && args.get_response().get_timedOut())
{
prm._originalDoPostBack(args._postBackElement.id,'');
//alert('handled time out');
args.set_errorHandled(true);
}
}
</script>

THIS IS THE TRIGGER CONTROL
<asp:DropDownList ID="ddlCategory" alt="Category" runat="server"
Width="100%" CssClass="clsDropDown" AutoPostBack="true">

</asp:DropDownList>

<asp:UpdatePanel runat="server"
ID="updPnlCaseType" UpdateMode="Conditional">
<ContentTemplate>
<asp:DropDownList ID="ddlCaseType"
alt="Case Type" runat="server"
Width="100%" CssClass="clsDropDown"
AutoPostBack="True">
</asp:DropDownList>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddlCategory"
EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>

<asp:UpdatePanel runat="server" ID="updPnlLocation" UpdateMode="Conditional">
<ContentTemplate>
<table><tr>
<td class="clstd" style="width: 10%; vertical-align: top;">
<div id="divLocationLabel" runat="server">Location:</div>
</td>
<td class="clstd" style="width: 700px">
<div id="divLocation" runat="server">
<ctrllocation:location ID="LocationControlCase"
runat="server"
SelectedLocation="All">
</ctrllocation:location>
</div>
</td>
</tr></table>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddlCaseType"
EventName="SelectedIndexChanged" />
<asp:AsyncPostBackTrigger ControlID="ddlCategory"
EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>

<asp:UpdatePanel runat="server" ID="updPnlUDEFs" UpdateMode="always">
<ContentTemplate>
<ctrlUserDefinedFields:UserDefinedFields
ID="ucCaseSubmissionFields" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>

Tom
 
M

Manish

Hi Tom,

I am not able to replicate the issue. I tried the following code to write
the selected value of the Dropdownlist on the selectedChangedevent on
callback.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"
Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server"
UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="DropDownList1"
EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
</div>
<asp:DropDownList ID="DropDownList1" runat="server"
AutoPostBack="True" DataSourceID="SqlDataSource1"
DataTextField="ProductID" DataValueField="ProductID"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"
Style="z-index: 100; left: 162px; position: absolute; top: 241px">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="SELECT [ProductID], [ProductName] FROM
[Alphabetical list of products]">
</asp:SqlDataSource>
</form>
</body>
</html>

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
Debug.WriteLine(this.DropDownList1.SelectedItem.ToString());
}

Regards,
Manish
www.ComponentOne.com
 

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

No members online now.

Forum statistics

Threads
473,962
Messages
2,570,134
Members
46,692
Latest member
JenniferTi

Latest Threads

Top