2015-08-01 7 views
5

When I click on that right top green button, page data will stay as it is.And new window will open for another functionalityWie ohne Post zurück in C# ASP.NET

After clicking on linkbutton,that is left side.`AppointMentScheduler', my data will flush out

Ich habe ein LinkButton in masterpage und auf Klick auf Linkbutton Schaltfläche Click-Ereignis von Klick auf Linkbutton von einer anderen Seite nennen, ich bin umgeleitet zu sagen wir Page1.aspx. Auf Page1.aspx habe ich eine button1. Auf das Klicken button1, öffne ich neues Fenster, nicht die Daten der Page1.aspx beeinflussend.

Aber wenn ich auf LinkButton von Masterpage klicken, Umleitung zu Page1.aspx und aus Code-behind, klicken button1, Page1.aspx ‚s Daten wird geändert.

Wie Sie dies verhindern können. Ich stelle meinen Code zur Verfügung.

Linkbutton auf Masterpage:

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

Click-Ereignis von Linkbutton:

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

Pageload umlenken Seite (PhoneMessage.aspx):

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

    . 

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

. 

. 

. 

Knopf auf 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> 

RaisPostBack Methode auf PhoneMessage.aspx:

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


      } 

. 

. 

ps: wenn ich auf btnScheduleAppointment klicken, wird sourceSchedule Appointments sein, und wenn ich auf lnkAppointMent klicken, wird source<span>Appointment Scheduler </span> sogar, wenn ich btnScheduleAppointment nenne auf klicken lnkAppointMent.

Ereignis Click-Taste:

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

     } 

Script:

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

Jede Klärung erforderlich. Bitte kommentieren.

Antwort

2

Ich brauchte etwas Zeit, um Ihr Problem zu simulieren. Haben Sie versucht, den LinkButton href oder attributes zu ändern, nachdem der Page1.aspx geladen wurde?

Ich gehe davon aus, dass Ihr Page1.aspx Ihre PhoneMessage.aspx ist. Wenn Sie also auf lnkAppointMent von der Masterseite klicken, geht es zu "PhoneMessage.aspx" und führt die Methode aus. Wenn Sie dann erneut klicken, wird nur gepostet Zurück statt tun, was es vorher getan hat, im Grunde, müssen Sie erneut auf "PhoneMessage.aspx" umleiten.

Also warum nicht Sie das Teil wie folgt ändern:

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

, dass der Link auf die Page1.aspx wieder umleiten würde, und das Gleiche tun, ohne Postbacks. Es ist nicht die eleganteste Lösung, aber in Ihrem Fall funktioniert es.Stellen Sie sicher, dass Sie Session ["PhoneCenter"] = "Termin" haben;

So ist es nicht die Antwort auf Ihre Frage, aber ich denke, ist eine Lösung für Ihr Problem.

Es funktionierte für mich, ich hoffe es hilft! Lass mich wissen was du denkst.

enter image description here

+0

danke für Ihre Mühe, Sir. Was wird "NoExec" hier sein? –

+0

string script = String.Format ("openNewWin ('" + "phonesscheduler.aspx" +' ') "); ScriptManager.RegisterStartupScript (this.Page, this.GetType(), "openNewWin", Skript, true); –

+0

Ich habe dies versucht, beim Laden von PhoneMessage.aspx Seite. Dadurch werden meine Daten der Seite nicht gelöscht. –