Dropdownlist的OnSelectedIndexChanged死活不触发
关于这个问题我网上翻了很多帖子,常见的问题我都检查了,autopostback设置为true了,page_load里面的数据绑定也写在if(!ispostback)里了。打断点跟踪第一次绑定数据正常,后面更改dropdownlist的选择时也正常触发回发,但是判断if(!ispostback) 不成立后,就不知道执行到哪里去了。反正页面表现是不管选择哪一个,dropdownlist的内容都是回到第一个,感觉是全部重新绑定了。实在是没辙了,请各位指教,代码片段如下
设备布局号要根据设备类型重新绑定数据
前台:
C# code?<div class="rowElem"> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <label> 设备类型:</label> <asp:DropDownList id="equipmenttype" AutoPostBack="True" OnSelectedIndexChanged="Selection_Change" runat="server" enableviewstate="true"> </asp:DropDownList> </ContentTemplate> </asp:UpdatePanel> </div> <div class="rowElem"> <asp:UpdatePanel ID="UpdatePanel2" runat="server"> <ContentTemplate> <label> 设备布局号:</label> <asp:DropDownList id="equipment" runat="server"> </asp:DropDownList> </ContentTemplate> </asp:UpdatePanel> </div>
后台:
C# code?public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack)//判断是否是第一次请求页面 { BindDateequipmenttype(); BindDateequipment(); } } protected void Selection_Change(Object sender, EventArgs e) { BindDateequipment2(); } void BindDateequipment2() { }
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="equipmenttype" EventName="SelectedIndexChanged" />
</Triggers>
<ContentTemplate>
<label>
设备布局号:</label>
<asp:DropDownList id="equipment" runat="server">
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>
JQuery会把代码appendTo到body,而不在form里,所以按钮事件无法触发。
解决方法:在点击按钮打开Dialog时,将div append到form里,使按钮生效。
将弹出div append到属于form里的div,那么服务器端控件就可以正常执行 。
$("body>div[role=dialog]").appendTo('form:first');