D
Don
I have a large DropDownList that is very slow when it's in an
UpdatePanel. The initial loading of the page is not slow, only the
PostBack is slow. When I do not use the UpdatePanel PostBacks are
very fast. I have EnableViewState set to false for this DropDownBox.
Using the debugger I see that the Code Behind is entered quickly. The
slowdown happens sometime after OnUnload occurs. I think it happens
when refreshing the page.
To duplicate the problem create a page with a ScriptManager and
UpdatePanel. Add a DropDownList and Button to the UpdatePanel. Here
is the code:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<aspropDownList ID="DropDownList1" runat="server"
EnableViewState="False">
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
In Page_load add the code below to add 6,000 rows to the DropDownList:
protected void Page_Load(object sender, EventArgs e)
{
DropDownList1.Items.Clear();
for (int i = 0; i < 6000; i++)
{
DropDownList1.Items.Add("A" + i);
}
}
Run the page and click the button. The PostBack is very slow - about
35 seconds.
Now move the Button outside of the UpdatePanel. This causes the
entire page to refresh when a PostBack is performed. This takes about
2 seconds.
UpdatePanel. The initial loading of the page is not slow, only the
PostBack is slow. When I do not use the UpdatePanel PostBacks are
very fast. I have EnableViewState set to false for this DropDownBox.
Using the debugger I see that the Code Behind is entered quickly. The
slowdown happens sometime after OnUnload occurs. I think it happens
when refreshing the page.
To duplicate the problem create a page with a ScriptManager and
UpdatePanel. Add a DropDownList and Button to the UpdatePanel. Here
is the code:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<aspropDownList ID="DropDownList1" runat="server"
EnableViewState="False">
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
In Page_load add the code below to add 6,000 rows to the DropDownList:
protected void Page_Load(object sender, EventArgs e)
{
DropDownList1.Items.Clear();
for (int i = 0; i < 6000; i++)
{
DropDownList1.Items.Add("A" + i);
}
}
Run the page and click the button. The PostBack is very slow - about
35 seconds.
Now move the Button outside of the UpdatePanel. This causes the
entire page to refresh when a PostBack is performed. This takes about
2 seconds.