Ho un GridView in un pannello di aggiornamento. È un asp ereditato: GridView, quindi ha una piccola icona "esportami" che fa proprio questo. Funziona rispondendo a un clic "esportazione" con un file XLS. Il problema è che se metti la GridView intelligente all'interno di un pannello di aggiornamento, ASP.NET pensa che il file XLS debba essere scritto nel pannello, che ovviamente non è quello che vogliamo. Per questo, ho bisogno di un post-back completo ogni volta.Forza postback completo a livello di programmazione da UpdatePanel
miei pannelli aggiornamento sono tutti programatically generati
soluzioni che non funzionano in questo preciso contesto (molti dei quali sono coperti altrove sul SO):
In ASP.NET prima versione 4 , se hai lasciato l'ID su un controllo, farebbe un postback completo anche all'interno di un pannello di aggiornamento. La mia domanda è solo per il più recente e più grande. NET 4.
ScriptManager.RegisterPostBackControl sembra promettente. Fa in modo che il controllo post-back utilizzi l'ID pannello corretto come eventtarget, ma non aiuta in altro modo.
Aggiunta di un PostBackTrigger al pannello Aggiorna. I miei pannelli di aggiornamento sono generati a livello di codice e MS dichiara che questo non è supportato. I miei test indicano che hanno ragione: l'ho provato in ogni modo, ma questo non funziona.
Non mi piace l'idea che GridView sia in grado di uscire da se stesso, ma ho cercato di mettere un controllo extra all'esterno di updatePanel in queste circostanze. L'idea di fare un clic sul lato client sul mio pulsante di esportazione all'interno del pannello deve essere reindirizzato dal client javascript per simulare un clic su quel pulsante al di fuori del pannello. Tuttavia, questo non funziona perché non posso aggiungere apparentemente il controllo "esterno" alla pagina - Ottengo il "La raccolta di controlli non può essere modificata durante le fasi DataBind, Init, Load, PreRender o Unload". errore.
Utilizzare jQuery per spostare il controllo "Esporta" all'esterno del pannello. MS deve avere una lista di controlli che pensano siano "dentro" il pannello, e la posizione fisica all'interno del DOM non ha importanza.
Qualcuno ha qualche idea su come farlo funzionare? So molto di questo dovrebbe funzionare, ma non è esattamente la stessa cosa.
Non funziona in questo modo per me. Se aggiungo il "postBackTrigger" quando creo i pannelli, fallisce se il button.ID non è già presente (ragionevole), ma se lo aggiungo nel mio controllo personalizzato non ha alcun effetto - suggerisce qualche cosa del ciclo di vita . Ci penserò. – philw
Se metto il controllo del pulsante nella pagina su OnInit() del controllo che contiene i pannelli di aggiornamento, funziona come suggerito. Se invece lo metto dove ne ho bisogno, nell'OnInit() del controllo personalizzato all'interno del pannello (cercando di eseguire il backup della gerarchia di controllo per trovare il pannello di aggiornamento), allora non funziona. Più sperimentazione .. – philw
Non sono sicuro se ciò sarà di aiuto, ma esegui il checkout di questa domanda (in particolare la risposta): [FileUpload in FormView all'interno di un UpdatePanel] (http://stackoverflow.com/questions/3555917/fileupload-in-formview-inside -an-updatepanel) – jdavies