5

当我点击右上角的绿色按钮时,页面数据将保持原样。新窗口将打开另一个功能

点击链接按钮后,即左侧的`ApppointMentScheduler',我的数据会被刷掉

我有一个链接按钮LinkButtonmasterpage点击和点击,我正在重定向到,比如说Page1.aspx。在 Page1.aspx 上,我有一个button1. 点击那个button1,我打开新窗口,不影响Page1.aspx.

但是,当我单击LinkButton母版页,重定向到Page1.aspx后面的代码和从后面的代码中,单击button1时,Page1.aspx数据会发生变化。

如何防止这种情况。我正在提供我的代码。

母版页上的链接按钮:

<asp:LinkButton ID="lnkAppointMent" runat="server" OnClick="lnkAppointMent_Click"><span>Appointment Scheduler </span></asp:LinkButton>

点击 LinkBut​​ton 的事件:

protected void lnkAppointMent_Click(object sender, EventArgs e)
        {
            Session["PhoneCenter"] = "Appointment";
            Response.Redirect("PhoneMessage.aspx");
        }

重定向页面的PageLoad(PhoneMessage.aspx):

    protected void Page_Load(object sender, EventArgs e)
                {
                    fillCustomTypeMessages();            
                    if (!Page.IsPostBack)
                    {
                        .

    .

    .
                        else if (Session["PhoneCenter"].ToString() == "Appointment")
                        {
                            btnScheduleAppointments_Click(btnScheduleAppointments, null);
                        }

.

.

.

PhoneMessage.aspx 上的按钮:

<div style="float: right; padding-right: 120px">
                                <asp:Button ID="btnScheduleAppointments" runat="server" OnClick="btnScheduleAppointments_Click"
                                    CssClass="button" Text="Schedule Appointments" ToolTip="Open appointment scheduler" />
                            </div>

RaisPostBackPhoneMessage.aspx 上的方法:

protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument)
        {
            try
            {
                base.RaisePostBackEvent(source, eventArgument);
            }
            catch (Exception ex)
            {


            }

.

.

ps:当我点击的时候btnScheduleAppointmentsource会是Schedule Appointments,如果我点击lnkAppointMent, 即使我在点击的时候source也会是。<span>Appointment Scheduler </span>btnScheduleAppointmentlnkAppointMent

按钮的点击事件:

protected void btnScheduleAppointments_Click(object sender, EventArgs e)
        {
            if (!Permissions.checkPermissions(Session["employeeloggedin"].ToString(), "PHMSGVMD"))
            {
                ScriptManager.RegisterStartupScript(this, Page.GetType(), "OnLoad", "alert('You must have the Phone Messages: View and Modify permission to schedule appointments!')", true);
            }
            else
            {
                string script = String.Format("openNewWin('" + "phonescheduler.aspx" + "')");
                ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "openNewWin", script, true);
            }

        }

脚本 :

function openNewWin(url)
        {
            alert(url);
            var open_link = window.open('', '_blank');
            open_link.location = url;
        }

需要任何澄清。请评论。

4

1 回答 1

2

我花了一些时间来模拟你的问题。您是否尝试在加载Page1.aspx后修改 LinkBut​​ton href 或属性?

我假设您的 Page1.aspx 是您的 PhoneMessage.aspx,所以当您从母版页单击 lnkAppointMent 时,它会转到“PhoneMessage.aspx”并执行该方法,然后如果您再次单击它,它只会发回而不是做它以前做了什么,基本上,你需要再次重定向到“PhoneMessage.aspx”。

那么为什么不像这样修改部分:

                    else if (Session["PhoneCenter"].ToString() == "Appointment")
                    {
                ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "NoExec", String.Format("document.getElementById('lnkAppointMent').href=window.location.href;"), true);
                btnScheduleAppointments_Click(btnScheduleAppointments, null);
                    }

这将使链接再次重定向到 Page1.aspx,并且在没有回发的情况下执行相同的操作。这不是最优雅的解决方案,但它可以在您的情况下完成工作。只要确保有Session["PhoneCenter"] = "Appointment";

因此,这不是您问题的答案,但我认为这是您问题的解决方案。

它对我有用,我希望它有帮助!让我知道你的想法。

在此处输入图像描述

于 2015-08-01T10:30:10.243 回答