读书人

Dropdownlist的OnSelectedIndexChange

发布时间: 2013-06-26 14:29:32 作者: rapoo

Dropdownlist的OnSelectedIndexChanged死活不触发
本帖最后由 vanchris 于 2012-12-02 10:07:33 编辑 关于这个问题我网上翻了很多帖子,常见的问题我都检查了,autopostback设置为true了,page_load里面的数据绑定也写在if(!ispostback)里了。打断点跟踪第一次绑定数据正常,后面更改dropdownlist的选择时也正常触发回发,但是判断if(!ispostback) 不成立后,就不知道执行到哪里去了。反正页面表现是不管选择哪一个,dropdownlist的内容都是回到第一个,感觉是全部重新绑定了。实在是没辙了,请各位指教,代码片段如下
设备布局号要根据设备类型重新绑定数据
前台:

<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>

后台:

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和updatepanel冲突这种情况是有可能出现的,但看你的代码片段,也看不出冲突的具体原因,你可以到网上搜下。
[解决办法]
如果数据不多,可以一次加载联动需要的数据到前台,然后你已经在用jQuery了,操作一下dropdownlist不是很难的
[解决办法]
JQuery会把代码appendTo到body,而不在form里,所以按钮事件无法触发。

解决方法:在点击按钮打开Dialog时,将div append到form里,使按钮生效。

将弹出div append到属于form里的div,那么服务器端控件就可以正常执行 。

$("body>div[role=dialog]").appendTo('form:first');

读书人网 >asp.net

热点推荐