通过函数刷新时关闭弹出窗口

本文关键字:窗口 函数 刷新 | 更新日期: 2023-09-27 18:13:07

我有一切设置和功能已经工作,一切似乎都很好。只要有一个疑问,我就不知道这是否可能。我有一个按钮,打开一个modalpopupextender,在那里,我有一个表单,其中有另一个按钮,激活下拉列表(这是一个我抓住所有的信息)和点击按钮后,它应该填写所有的表单。问题是,它关闭了modalpopupextender,虽然函数正在完成,但我不想要的是关闭窗口,我的意思是刷新弹出窗口而不关闭它

给你……

Class.aspx

<asp:Panel ID="panelEmail" Height="680px" Width="800px" runat="server" CssClass="modalPopUp">
    <h2>Contact by Email:</h2>
    <hr />
    <blockquote>
        <legend>Pick the template to use: </legend>
        <asp:dropdownlist id ="ddlTemplate" runat ="server" Height="23px" Width="436px">
              </asp:dropdownlist >  
        <asp:Button ID="Button1" runat="server" Text="Select" OnClick="Template_Changed" />   
        <legend>Email Recipient: </legend>
        <asp:TextBox ID ="emailT" runat="server" Width="356px" Height="24px" Visible="true" Text="prueba@prueba.com"></asp:TextBox>
        <legend>Email Subject: </legend>
        <asp:TextBox ID ="title" runat="server" Width="356px" Height="24px" Visible="true" ></asp:TextBox> 
        <asp:TextBox ID ="txtDetails" runat="server" Width="672px" Height="267px" Visible="true" ></asp:TextBox>
        <ajaxToolkit:HtmlEditorExtender ID="TextBox1_HtmlEditorExtender" runat="server" TargetControlID="txtDetails" 
            EnableSanitization="false" DisplaySourceTab="true" >
        </ajaxToolkit:HtmlEditorExtender><br />      
        <legend>If you want to save the template, name it: (Optional) </legend>
        <asp:TextBox ID ="nameTemplate" runat="server" Width="356px" Height="24px" Visible="true" ></asp:TextBox>
        <br /><br />
        <div align="center">
        <asp:Button ID="Button2" runat="server" Text="Send Mail" OnClick="SendMail"/> 
        <asp:Button ID="Button3" runat="server" Text="Save Template" OnClick="saveTemplate"/>
        <asp:Button ID="btnCancelEmail" runat="server" Text="Cancel"  CausesValidation="false" />
        </div>
    </blockquote>           
</asp:Panel>
<!-- Código añadido por Enrique Bravo -->
<ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender4" runat="server"
    PopupControlID="panelEmail" 
    TargetControlID="lnkEmail"
    CancelControlID="btnCancelEmail"
    BackgroundCssClass="modalBackGround" 
    DropShadow="true" ></ajaxToolkit:ModalPopupExtender>
                        <tr id="trEmail">
                            <td>
                                <asp:Image ID="Image1" runat="server" ImageUrl ="Images/share.png" width="22px" height="22px" />
                            </td>
                            <td align="left" valign="middle">
                                  <asp:LinkButton ID="lnkEmail" runat="server" Text="Email Contact" ></asp:LinkButton> 
                            </td>
                        </tr>

Class.aspx.cs

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack){
loadlist();
         }
    }
    public void loadList()
    {
        if (!this.IsPostBack)
        {
            try
            {
                BO.Messages template = new BO.Messages();
                ddlTemplate.DataSource = template.GetAll();
                ddlTemplate.DataTextField = "Title";
                ddlTemplate.DataValueField = "Id";
                ddlTemplate.DataBind();
                ddlTemplate.SelectedIndexChanged += Template_Changed;
            }
            catch (Exception e)
            {
                e.ToString();
            }
        }
    }
    /// <summary>
    /// Select the correct Message if there has been one template selected
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Template_Changed(object sender, EventArgs e)
    {
        int countryId = int.Parse(ddlTemplate.SelectedItem.Value);
        if (countryId > 0)
        {
            BO.Messages texto = new BO.Messages();
            txtDetails.Text = texto.GetByID(countryId).Body;
            title.Text = texto.GetByID(countryId).Subject;
        }
    }

通过函数刷新时关闭弹出窗口

正如这里提供的信息所示:

回发是一个交互式网页所采取的动作,当整个页面及其内容被发送到服务器处理一些信息,然后服务器将相同的页面发送回浏览器。

所以当你点击按钮时,页面被发送回服务器,修改后发送回客户端,导致刷新。

要避免刷新,可以做以下两件事之一:

  1. 使用UpdatePanel控件
  2. 将方法Template_Changed改为[WebMethod],并通过ajax调用。

    $.ajax({ type: 'POST', url: '<%= ResolveUrl("~/Class.aspx/Template_Changed") %>', data: '{ templateId:' + JSON.stringify(value) + ' }', contentType: 'application/json; charset=utf-8', dataType: 'json', success: function (result) { /****FILL FORM HERE ***/}; });