【问题标题】:ModalPopupExtender does not work properly after autopostback自动回发后 ModalPopupExtender 无法正常工作
【发布时间】:2012-02-26 07:02:21
【问题描述】:

我有 2 个更新面板,第一个带有打开模式弹出窗口的链接按钮,我意识到必须将这些验证器设置为 false,然后才能弹出。第二个更新面板与面板一起出现,那些按钮取消和按钮确认。在自动回发之前,一切正常。但是我想知道为什么在自动回发之后,取消按钮甚至无法关闭模式弹出窗口,而且确认按钮也不再起作用了。

<asp:UpdatePanel ID="uptbl" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
<asp:ModalPopupExtender ID="mpe" runat="server"
        TargetControlID="btnDummy"
        PopupControlID="UpdatePanel1"
        BackgroundCssClass="modalBackground"
        OkControlID="btnDummy"
        CancelControlID="Button2"
        BehaviorID="mpeBehavior" />
<input id="btnDummy" runat="server" type="button" style="display: none;" />

</ContentTemplate>
</asp:UpdatePanel>


<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:DropDownList ID="ddlLength" runat="server" AutoPostBack="true" onselectedindexchanged="ddlLength_SelectedIndexChanged">
<asp:ListItem>---Select Minutes---</asp:ListItem>
<asp:ListItem Value="60">60</asp:ListItem>
<asp:ListItem Value="120">120</asp:ListItem>
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" InitialValue="---Select Minutes---" 
                                 runat="server" ErrorMessage="Minutes is required!"
                                 ControlToValidate="ddlLength" Display="Dynamic"
                                 CssClass="error" Enabled="false" ValidationGroup="reserve">
                                 </asp:RequiredFieldValidator>
<asp:Button ID="btnConfirm" runat="server" Text="Confirm" OnClick="btnConfirm_Click" ValidationGroup="reserve"/>
<asp:Button ID="Button2" runat="server" Text="Cancel" CausesValidation="false" OnClick="btnCancel_Click" />

public void DynamicClick(object sender, EventArgs e)
{
UpdatePanel1.Update(); 
mpe.Show();
RequiredFieldValidator2.Enabled = true;
}
    public void btnCancel_Click(object sender, EventArgs e)
    {
        mpe.Hide();
        RequiredFieldValidator2.Enabled = false;
    }

protected void ddlLength_SelectedIndexChanged(object sender, EventArgs e)
    {
        int length = 0, unit = 0;
        if (ddlLength.SelectedIndex != 0)
        {
            length = Convert.ToInt32(ddlLength.SelectedItem.Value);
            unit = length / 60;
        }

        RequiredFieldValidator1.Enabled = true;
        RequiredFieldValidator2.Enabled = true;
        Button2.CausesValidation = false;
    }

【问题讨论】:

    标签: c# asp.net modalpopupextender autopostback


    【解决方案1】:

    请在下拉服务器端更改事件中添加以下代码

    modalpopup.show(); updatepanel.update();
    

    其中 modalpopup 是 modalpopupextender 的“ID”,而 updatepanel 是 updatepanel 的“ID”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-03
      • 1970-01-01
      • 2014-06-27
      • 1970-01-01
      • 2014-09-20
      • 2015-09-11
      • 2011-09-16
      相关资源
      最近更新 更多