我是UpdatePanel
的新手,我有2个DropDownList:DropDownList_1
和DropDownList_2
其中DropDownList_2
内容将取决于DropDownList_1
所选值,这是我的代码:
ASPX:
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="DropDownList_1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DropDownList_1_SelectedIndexChanged" DataSourceID="businessgroup" DataTextField="BusinessGroupName" DataValueField="Id"></asp:DropDownList>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="DropDownList_1" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
<asp:DropDownList ID="DropDownList_2" runat="server" DataSourceID="jobposition" DataTextField="JobPositionName" DataValueField="Id"></asp:DropDownList>
CS:
protected void DropDownList_1_SelectedIndexChanged(object sender, EventArgs e)
{
SqlDataSource1.SelectCommand = "SELECT DISTINCT * FROM [JobPosition] WHERE BusinessGroupID ="+DropDownList_1.SelectedValue;
DropDownList_2.DataBind();
}
其工作如上所述,但是我不希望在输出中刷新整个页面,我也尝试在DropDownList_1中删除AutoPostBack="true"
,但它停止工作,在这里我在做什么错?谢谢!
编辑:
我也尝试过在UpdatePanel的ContentTemplate内移动DropDownList_2,但整个页面仍在刷新。
我找到了修复程序,感谢Cristina提醒我检查控制台错误。我想做的是仅供参考,以供遇到任何相同问题的人使用:
这是您应该怎么做:
当您使用更新面板时,必须在刷新页面的同时注册事件,因为必须使用Microsoft的PageRequestManager重新订阅每个更新。
如果您的面板在按照指南进行设置后仍然发回,请检查是否未为执行回调的特定控件或通过将ClientIDMode默认设置为从Web继承的静态设置为ClientIDMode="Static"
.config,页面或父容器。