【问题标题】:Closing popup when refreshed via function通过函数刷新时关闭弹出窗口
【发布时间】:2016-10-13 16:14:13
【问题描述】:

我已经设置好了所有功能,并且功能已经正常工作,一切看起来都很好。只是有一个疑问,我不知道这是否可能。我有一个打开modalpopupextender的按钮,在那里,我有一个表单,它有另一个激活下拉列表的按钮(这是我获取所有信息的地方),单击按钮后,它应该填写所有表格。 问题是,它关闭了modalpopupextender,虽然功能正在完成,但我不想关闭窗口,我的意思是刷新弹出窗口而不关闭它

这里是……

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

类.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;

        }
    }

【问题讨论】:

    标签: c# asp.net popup modalpopupextender


    【解决方案1】:

    正如here提供的信息所说:

    回发是交互式网页执行的操作,当整个页面及其内容被发送到服务器以处理某些信息,然后服务器将同一页面回发给浏览器。

    因此,每当您单击按钮时,页面都会被发送回服务器、更改并发送回客户端,从而导致刷新。

    为避免刷新,您可以执行以下两项操作之一:

    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 ***/}; });

    【讨论】:

    • 会调查一下,事实上,我从来没有使用过webmethods。会给它一个检查,但我习惯将我的方法放在“填写表格”上?或者我应该将它保留在 .cs 上并在该空间中调用它?谢谢!
    • 在您的 .cs 文件中,您将返回一个字符串,而不是在那里填写字段。并将使用 JavaScript 填写该空间上的表单。
    • 抱歉打扰了,您能多指教一下吗?或者给我指出一些方向?总新手在这里 :(
    • 嗯,它可以这样工作。但我用 modalpopupexter.show() 强制它,显然它工作得很好。谢谢你所做的一切!
    • @EnriqueBravo,很高兴它对你有用。只是未来的参考,请查看here,用于调用 WebMethods。 WebMethods 是一种从 javascript 调用代码的方式,将 C# 函数变成一种 WebService 方法
    猜你喜欢
    • 2011-05-15
    • 1970-01-01
    • 2012-07-09
    • 2017-02-05
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    相关资源
    最近更新 更多