L'intera pagina viene aggiornata anche se la visualizzazione griglia si trova in un pannello di aggiornamento

StackOverflow https://stackoverflow.com/questions/34798

Domanda

Ho una visualizzazione a griglia che si trova all'interno di un pannello di aggiornamento per un popup modale che ho su una pagina.
Il problema è che l'intera pagina si aggiorna ogni volta che faccio clic su un pulsante immagine che si trova nella mia visualizzazione a griglia.Ciò fa caricare l'intera pagina e poiché ho oscurato il resto della pagina in modo che l'utente non possa fare clic su di essa, questo è molto fastidioso.

Qualcuno sa cosa mi sto perdendo?

Modificare: Ho inserito una soluzione migliore in fondo

È stato utile?

Soluzione 5

Diversi mesi dopo questo problema è stato risolto.Il progetto su cui stavo lavorando era una versione precedente 1.1 che è stata convertita con 2.0.Tuttavia, nel web.config è rimasta questa riga:

<xhtmlConformance mode="Legacy"/>

Quando è stato commentato, tutti i bug che sembravano avere con il toolkit di controllo ajax sono scomparsi

Altri suggerimenti

Assicurati di avere quanto segue impostato su UpdatePanel:ChildrenAsTriggers=false e UpdateMode=Condizionale

hai ChildrenAsTriggers="false" su UpdatePanel?

Sono presenti errori JavaScript nella pagina?

Ho avuto questo problema e mi sono imbattuto nel seguente articolo:

http://bloggingabout.net/blogs/rick/archive/2008/04/02/linkbutton-inside-updatepanel-results-in-full-postback-updatepanel-not-triggered.aspx

Il mio pulsante non è stato creato dinamicamente nel codice come in questo esempio, ma quando ho controllato il codice nell'aspx abbastanza sicuro mancava una proprietà ID.Dopo aver aggiunto l'ID, il postback è diventato asincrono e ha iniziato a comportarsi come previsto.

Quindi, riassumendo, controlla che il tuo pulsante abbia un ID!

Stai testando in Firefox o IE?Abbiamo un problema simile in cui l'intera pagina viene aggiornata in Firefox (ma non in IE).Per aggirare il problema utilizziamo un asp:button nascosto con il set useSubmitBehavior="false".

<asp:Button ID="btnRefresh" runat="server" OnClick="btnRefresh_Click" Style="display: none" UseSubmitBehavior="false" />

La finestra modale viene visualizzata utilizzando la finestra modale di IE?Oppure è un DIV quello che stai mostrando?

Se si tratta di un popup modale IE devi assicurarti di averlo

   <base target="_self" /> 

Per assicurarti che i post siano tornati alla pagina modale.

Se è un DIV assicurati di avere il tuo XHTML corretto o potrebbe non sapere cosa aggiornare.

Lascerei onClick e lo imposterei come trigger per updatePanel.

È strano che funzioni in FF e non in IE.Questo è l’opposto del comportamento che sperimentiamo.

UpdatePanels può essere sensibile all'HTML non valido.Esegui un View Source dal tuo browser ed eseguilo attraverso qualcosa come il validatore W3C per cercare qualcosa di strano (div o tabella non chiusi sono i soliti sospetti)

Se usi Firefox, è disponibile un'estensione/add-on per la convalida HTML che funziona abbastanza bene.

Per riferimento..

Ho anche notato, quando si utilizza il temuto <asp:UpdatePanel ... /> E <asp:LinkButton ... />, anche quello UpdateMode="Conditional" sul UpdatePanel sono necessarie le seguenti altre modifiche:

  • ViewStateMode="Enabled" è richiesto su <asp:Content ... /> (L'ho impostato su Disabled nel MasterPage)
  • ClientIDMode="Static" doveva essere rimosso da <%@ Page ... />

Per evitare post-back, aggiungi return false all'evento onclick.

button.attribute.add("onclick","return false;");

Campione:

string PopupURL = Common.GetAppPopupPath() + "Popups/StockChart.aspx?s=" + symbol;
hlLargeChart.Attributes.Add("onclick", String.Format("ShowPopupStdControls(PCStockChartWindow,'{0}');return false;", PopupURL));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top