Domanda

Sembra che in alcuni casi, se finisci con i modalPopup nidificati avvolti con updatePanels (non l'ideale lo so, e probabilmente dovremmo essere refactored, ma questo è ciò con cui stiamo lavorando a causa di come alcuni controlli dell'utente volevamo per riutilizzarli sono stati scritti), quando si attiva un postback che dovrebbe aprire il modalPopup nidificato, invece chiude quello genitore. Per ragioni di argomento, se imposto un breakpoint ed eseguo

((ModalPopupExtender)this.Parent.Parent.FindControl("modalPopupExtender'sID").Show();

proprio prima che venga chiamato il metodo Show () figlio di modalPopup, funziona come inizialmente previsto. Mi sembra che, poiché quando updatePanels sono nidificati, possono postare indietro il loro genitore, il genitore modalPopup "non lo sa". dovrebbe mostrare e ricaricare la visibilità del suo pannello da zero come falso. Poiché modalPopup figlio viene quindi nidificato all'interno di un pannello padre la cui visibilità è falsa, la chiamata a Show () su di esso non ha alcun effetto. Quindi, invece di aprire un altro modalPopup, quello attuale si chiude. Questo non è un errore, solo un comportamento che non ci aspettavamo, quindi è stato difficile rintracciare senza alcuna eccezione lanciata da nessuna parte, ma penso che la spiegazione sopra abbia senso ... Se ho capito il problema in modo errato, chiariscilo e mi illumini, perché questo non sembra accadere tutto il tempo, penso che lo farebbe!
A questo punto, per questa particolare situazione, siamo bloccati a riscrivere alcuni di questi controlli per non finire con UpdatePanels nidificati, quindi questo non accade, ma sono curioso:
Qualcuno ha mai incontrato questo problema in precedenza, e hai escogitato qualche soluzione intelligente che non comporta una chiamata a FindControl () per ri-mostrare () il modalPopup in questione?

È stato utile?

Soluzione

Ho risolto questo problema!
Se cambi UpdateMode di UpdatePanel in " Condizionale " ;, UpdatePanel padre non registra di nuovo quando il figlio UpdatePanel pubblica di nuovo e quindi annidarli non è affatto un problema!
Non sono sicuro del motivo per cui UpdateMode = " Sempre " è l'impostazione predefinita, ma lezione imparata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top