.aspx文件中的部分代码如下:
<asp:ScriptManager ID="ScriptManager2" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel3" runat="server">
<ContentTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" Width="205px"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel4" runat="server">
<ContentTemplate>
<asp:ListBox ID="ListBox1" runat="server" Height="109px" Width="209px"></asp:ListBox>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="DropDownList1" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
.aspx.cs文件的部分代码如下:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{fun1();
fun2();
//两个函数都是访问后台数据库
}
问题是:当我选择下拉框时,整个页面任然在刷新。用debug看后,发现DropDownList1_SelectedIndexChanged函数执行完后,将继续执行Page_Load函数。请问这是为什么呀?怎么解决呢?注:我用的是vs2008。
听取以上回答的意见后,我更改了一些代码,如下:
.aspx文件:
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:DropDownList ID="DSort1" runat="server" AutoPostBack="True" Width="205px" OnSelectedIndexChanged="DSort1_SelectedIndexChanged">
</asp:DropDownList><asp:ListBox ID="LSort2" runat="server" Height="109px" width="209px"></asp:ListBox></ContentTemplate><Triggers><asp:AsyncPostBackTrigger ControlID="DSort1" EventName="SelectedIndexChanged" /></Triggers></asp:UpdatePanel>
.cs文件:
Page_Load事件加上 if(!IsPostBack),它和DSort1_SelectedIndexChanged函数里面的函数都是doWorks_getSort1();doWorks_getSort2();(从数据库中读数据到列表框中)。但是,改变下拉框的选项时,整个页面任然在刷新,debug测试发现,执行完DSort1_SelectedIndexChanged函数后,将会执行Page_UnLoad函数。
BIG阳
慕仙森
RISEBY