下拉列表不会触发索引更改事件

时间:2013-05-09 11:48:07

标签: c# javascript jquery asp.net ajax

当我使用它时,我的下拉列表触发了索引更改后面的代码,

$('#messagebox').show();

但在我使用时不会触发事件,

 $.blockUI({message: $('#messagebox'), css: { width: '600px' } });

这是我的div标记,其中下拉列表显示为消息框

<div id="messagebox" style="display: none; cursor: default">
   <asp:DropDownList ID="ddl" runat="server" EnableViewState="true" AutoPostBack="true" OnSelectedIndexChanged="ddl_SelectedIndexChanged"/>
</div>

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

这很可能是因为blockUI将内容附加到正文而不是表单标记。如果事件位于表单标记之外,Asp.Net控件将不会发回事件,因此当使用javascript将元素附加到正文时,您会经常遇到它。你很可能不得不对BlockUI进行一些修改。

有关详细信息,请参阅此答案:https://stackoverflow.com/a/7929700/1346464

修改

总结链接的答案(基于blockUI v2.59.0-2013.04.05,这是撰写本文时的最新内容):

在第319行(搜索var layers)上,将$('body')替换为$('form')

在第336行(搜索$('html,body').css('height','100%');)上,将$('html,body')替换为$('html,body,form')

编辑2:

修正解锁:

在第448行(搜索els = $('body').children().filter('.blockUI').add('body > .blockUI');)将body的两个实例替换为form

答案 1 :(得分:0)

我不熟悉jQuery blockUI,但是使用jQuery Dialog,它会在显示时从表单中删除任何表单字段。因此,当回发表单时,您无权访问它们。

使用jQuery Dialog,您必须添加一些代码才能将字段添加回表单。我建议搜索一下blockUI是否有同样的问题。

答案 2 :(得分:-3)

autopostbackproperty=true like  below

<asp:DropDownList ID="ddlName"  runat="server" AutoPostBack ="true"
    onselectedindexchanged="ddlName_SelectedIndexChanged" >
</asp:DropDownList>

protected void ddlName_SelectedIndexChanged(object sender, EventArgs e)
{

}