Domanda

Sto usando tre webparts.WebPart A crea un valore quando l'utente fa clic sul pulsante in WebPart A. WebPart B utilizza questo valore per creare un elenco con elementi L'utente può selezionare.WebPart C utilizza entrambi i valori di creare una stringa a scopo di test.

WebPart B utilizza questo elenco per riempire un DropdownBox.Ogni volta che viene modificato ilValue, è necessario aggiornare WebPart C. Questa è la dichiarazione del controllo.

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

Il problema qui è che usando

_documentTypeList.AutoPostBack = true;
.

Ricarica la pagina completa e ripristina il valore in WebPart A a NULL.Come posso inviare il nuovo valore di WebPart B per WebPart C senza perdere il valore di WebPart a?Questo accade tutto su 1 pagina.

È stato utile?

Soluzione

Salvataggio della sessione Stato Varibles può essere eseguito utilizzando:

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

Questo è un getter / setter per salvare / ottenere dallo stato della sessione

Per utilizzare questo fare quanto segue:

Questo ottiene il valore dallo stato di sessione (deve essere in evento OnPrerender per vedere la sessione di stato Varibles)

txtName.Text = Name;
.

Questo set nello stato di sessione (può essere ovunque tu si desidera salvare nello stato di sessione)

Name = txtName.Text;
.

per int valanuse:

Cahnder public string Name a public int Name e lo stesso vale per qualsiasi altra cosa come i valori del BOOL ect.

Quindi sembrerebbe questo per int:

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

Come altri hanno notato per i dati da passare tra WebPart, è necessario utilizzare il metodo IInterface:

Fornire (WebPart Invio dei dati) Consumer (WebPart utilizzando tali dati) e interfaccia che è la connessione tra i WebParts:

Quanto sopra funzionerà al 100% e salva i tuoi valori sul postback :)

Just Incase Hai bisogno di questo;) IV ha pubblicato alcuni link su connessioni qui sotto.

Problemi WebPart collegabili .................. ....?

e

Connessione tra 2 Web Parts

Spero che aiuti :)

Altri suggerimenti

hai provato if (!Page.IsPostBack) { your code here }?

Hai provato a creare una connessione web in web part personalizzata per il tuo scopo?Andando attraverso il tuo requisito potrebbe essere l'opzione più appropriata

In precedenza le parti Web dove connessi con il seguente ordine.

WebPart A => WebPart B
WebPart B => WebPart C
WebPart A => WebPart C
.

Ciò ha creato un errore se volevo chiamare entrambi i valori in WebPart C quando ho cambiato il valore in WebPart B. Ogni volta che è stato modificato il valore di WebPart B è stato necessario ricaricare la pagina e quindi il ricaricamento di WebPart A. perché WebPart A A. Perché WebPart A A. Perché WebPart A A. Valore che viene creato sull'interazione dell'utente e non sul carico della pagina Il valore è stato perso. WebPart B e WebPart C sequestrato per funzionare senza il valore di WebPart A. Se si desidera mantenere la connessione WebPart come descritto sopra, controlla la risposta di MashaRepointMaster.

Perché nel mio caso WebPart A crea un token di accesso unico che preferirei non salvarlo sulla pagina. Preferirei mantenerlo con i webparts. Per fare ciò ho cambiato la connessione tra loro. Invece di collegamento, ho usato la seguente connessione.

WebPart A => WebPart B => WebPart C
.

WebPart B salva il valore di WebPart A e lo fornisce insieme al proprio valore a WebPart C. Ecco come appare l'interfaccia WebParts B attualmente.

public interface IWebPartB
{
    string webPartAValue { get; }
    string webPartBValue { get; }
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top