Cosa succede se si desidera la comunicazione webpart prima di Page_Load?
-
05-07-2019 - |
Domanda
Ho bisogno di creare alcuni controlli dinamici su Page_Load nella webpart utente. Nella webpart del provider ho fatto un po 'di hacking e l'ho preso in modo da poter ottenere un valore di controllo prima che viewstate sia caricato in Page_Init.
Quindi sostanzialmente quello che voglio è che le webpart possano comunicare prima di Page_Load.
[ConnectionConsumer("FormRID Consumer","FormRIDConsumer")]
public void InitializeProvider(MyControl.IFormRID provider)
{
theProvider = provider;
FormRID = theProvider.FormRID;
}
Questo metodo non viene chiamato fino a dopo Page_Load. Questo è un grosso problema per me perché Page_Load dei miei consumatori dipende dal fatto che FormRID sia impostato e preciso. Non riesco a spostare il mio codice Page_Load in Page_LoadComplete perché ho bisogno di creare controlli dinamici con viewstate (viewstate non viene ripristinato dopo Page_Load)
Quindi c'è qualche soluzione che posso usare per poter comunicare prima di Page_Load.
Soluzione 3
Ho finito per dover creare la mia comunicazione webpart.
È risultato molto più pulito di ASP.Net e la comunicazione può avvenire già quando OnInit all'interno delle webpart.
Altri suggerimenti
Hai provato ad iscriverti all'evento Init della web part area e a collocare InitializeProvider () lì? Credo che sia attivato prima degli eventi OnLoad o OnInit di controlli utente e moduli web.
È necessario utilizzare l'evento OnPreRender anziché su Carica, perché onLoad si verifica prima dell'esecuzione della connessione WebPart.
Ecco un esempio di cosa potresti aspettarti utilizzando gli eventi OnLoad e OnPreRender http://blog.mastykarz.nl/web-part-requires-clicking-twice-apply-ok-button-apply-changes/