Frage

Ich verwende drei Webparts.Webpart A erstellt einen Wert, wenn der Benutzer auf die Schaltfläche in Webpart A klickt.WebPart B verwendet diesen Wert, um eine Liste mit Elementen zu erstellen, die der Benutzer auswählen kann.WebPart C verwendet beide Werte, um zu Testzwecken eine Zeichenfolge zu erstellen.

WebPart B verwendet diese Liste, um eine Dropdown-Box zu füllen.Immer wenn der ausgewählte Wert geändert wird, sollte WebPart C aktualisiert werden.Dies ist die Deklaration der Kontrolle.

_documentTypeList = new DropDownList();
_documentTypeList.AutoPostBack = true;
this.Controls.Add(_documentTypeList);

Das Problem hierbei ist die Verwendung

_documentTypeList.AutoPostBack = true;

lädt die komplette Seite neu und setzt den Wert in WebPart A auf null zurück.Wie sende ich den neuen Wert von WebPart B an WebPart C, ohne den Wert von WebPart A zu verlieren?Das alles passiert auf einer Seite.

War es hilfreich?

Lösung

Das Speichern von Sitzungsstatusvariablen kann erfolgen mit:

    public string Name
    {
        get
        {
            return Page.Session["SaveName"] as string;
        }
        set
        {
            Page.Session["SaveName"] = value;
        }
    }

Dies ist ein Getter/Setter zum Speichern/Abrufen aus dem Sitzungsstatus

Um dies zu verwenden, gehen Sie wie folgt vor:

Dies ruft den Wert aus dem Sitzungsstatus ab (muss im onPreRender-Ereignis vorhanden sein, um Sitzungsstatusvariablen anzuzeigen).

txtName.Text = Name;

Dies wird in den Sitzungsstatus versetzt (kann überall dort sein, wo Sie den Sitzungsstatus speichern möchten)

Name = txtName.Text;

für int-Wert:

ändern public string Name Zu public int Name und das Gleiche gilt für alles andere wie Bool-Werte usw.

also würde es für int so aussehen:

    public int Name
    {
        get
        {
            return Page.Session["SaveName"] as int;
        }
        set
        {
            Page.Session["SaveName"] = value;
        }
    }

Wie andere angemerkt haben, sollten Sie für die Übermittlung von Daten zwischen Webparts die iInterface-Methode verwenden:

Bereitstellung (Webpart, der Daten sendet), Verbraucher (Webpart, der diese Daten verwendet) und Schnittstelle, die die Verbindung zwischen den Webparts herstellt:

Das Obige wird zu 100 % funktionieren und Ihre Werte beim Postback speichern :)

Nur für den Fall, dass Sie das brauchen ;) Ich habe unten einige Links zu Verbindungen gepostet.

Probleme mit verbindbaren WebParts......................?

Und

Verbindung zwischen 2 Webparts

ich hoffe es hilft :)

Andere Tipps

Haben Sie versucht, if (!Page.IsPostBack) { your code here } zu versuchen?

Haben Sie versucht, benutzerdefinierte Web-Teilen-Verbindung zu Ihrem Zweck zu erstellen?Wenn Sie Ihre Anforderung durchlaufen haben, ist dies möglicherweise die am besten geeignete Option

zuvor die Webteile, die mit in der folgenden Reihenfolge verbunden sind. generasacodicetagpre.

Dies erstellte einen Fehler, wenn ich beide Werte in WebPart c anrufen wollte, wenn ich den Wert in WebPart B. wechselt. Wenn der Wert von WebPart B geändert wurde Wert, der in der Benutzerinteraktion erstellt wird und nicht auf der Seite geladen wurde, war der Wert verloren. WebPart B und WebPart c ergriffen, um ohne den Wert von WebPart A zu funktionieren. Wenn Sie die Webpart-Verbindung wie oben beschrieben halten möchten, überprüfen Sie bitte die Antwort von fastsharepointmaster.

Weil in meinem Fall Webpart A ein einzigartiges Login-Token erstellt, würde ich es lieber nicht auf der Seite speichern. Ich würde es lieber mit den Webparts mithalten. Dazu habe ich die Verbindung zwischen ihnen geändert. Statt über dem Anschluss habe ich folgende Verbindung verwendet. generasacodicetagpre.

webPart B speichert den Wert von WebPart A und bietet ihm zusammen mit seinem eigenen Wert für WebPart C. So sieht die WebParts B-Schnittstelle derzeit aus. generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top