javascript - 从用户控件运行时,asp modal 弹出窗口会立即关闭
问题描述
我有一个用户控件,其中包含一个确认按钮扩展器和一个模式弹出扩展器。看起来像:
<asp:Panel ID="panelConfirmBox" runat="server" Style="display:none;">
<asp:Button ID="btnConfirmSelection" runat="server" CssClass="hidden"/>
<asp:Button ID="btnNo" runat="server" Text="No" />
<asp:Button ID="btnYes" runat="server" Text="Yes" />
<asp:ModalPopupExtender Id="popupConfirmBox" runat="server" PopupControlID="panelConfirmBox" CancelControlID="btnNo" OkControlId="btnYes" />
<asp:ConfirmButtonExtender ID="btnConfirm" runat="server" DisplayModalPopupID="popupConfirmBox"/>
</asp:Panel>
用户控件获得一个下拉列表。更改下拉列表选择时,应运行按钮 onclick 事件。在用户控件 aspx.cs 中有以下代码:
public string TargetControlId { set { popupConfirmBox.TargetControlID = btnConfirm.TargetControlID = btnConfirmSelection.ID; } }
public DropDownList DDL { get; set; }
public EventHandler OnClick { set { btnConfirmSelection.Click += value; } get { return OnClick; } }
protected void Page_Load(object sender, EventArgs e)
{
if (DDL != null)
{
string script = "$('#" + DDL.ClientID + "').on('change', function () { $('#" + btnConfirmSelection.ClientID + "').click();}); ";
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "CallChange" + ID, script, true);
}
}
在 aspx 中使用用户控件如下所示:
<asp:DropDownList ID="ddl" runat="server" AutoPostBack="true" />
<aa:DDLConfirmPopup runat="server" ID="ConfirmPopupSelectionChange" Title="aaa" Message="bbb" TargetControlId=""/>
在 aspx.cs 中:
ConfirmPopupSelectionChange.DDL = ddl;
ConfirmPopupSelectionChange.OnClick = new EventHandler(func);
protected void func(object sender, EventArgs e)
{
}
这几乎可以正常工作...问题是,在更改下拉列表选择时,弹出模式扩展器会打开,但会立即关闭。可能是什么问题?
谢谢!
解决方案
当所选项目更改时,您的 javascript 代码会尝试单击btnConfirmSelection
按钮。问题是,你有AutoPostBack="true"
. 所以它同时发回页面。出于这个原因,当您再次从服务器获取页面时,模式似乎正在关闭。
我尚未测试您的代码,但我建议设置AutoPostBack="false"
并检查是否可以解决问题。
<asp:DropDownList ID="ddl" runat="server" AutoPostBack="false" />
推荐阅读
- loops - 在Stata中使用循环重命名一长串变量
- r - 在自动绘图中将标题居中对齐
- ruby-on-rails - 如何在 PostgreSQL 中保存地图?
- c# - 自己类的 C# 类数组构造函数
- c# - 我如何创建两个部分来集中注意力和其他部分来写作?
- javascript - Socket 连接 ESP8266 和 Socket.io
- laravel - Laravel Aws S3 链接
- linq - 我需要最复杂的查询
- assembly - 如何保存来自用户的字符串输入并在第二行 return '\n''\n' 后终止
- excel - Excel Power Query - 计算匹配多列的数量