2013-03-06 12 views
5

con la casella di riepilogo a scorrimento, la pagina si aggiornerà (indesiderata).postback durante lo scorrimento di ListBox in chrome

questo problema è solo in chrome (versione 27). Negli altri browser funziona correttamente.

file aspx:

<asp:Label runat="server" ID="label1" ></asp:Label> 
<asp:ListBox ID="ListBox1" runat="server" 
    OnSelectedIndexChanged="ListBox1_SelectedIndexChanged" 
    DataValueField="f1" DataTextField="f2" DataSourceID="SqlDataSource1" 
    Rows="15" AutoPostBack="true" > 
</asp:ListBox> 
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    SelectCommand="sp1" SelectCommandType="StoredProcedure" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString1 %>"> 
</asp:SqlDataSource> 

.cs di file:

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    label1.Text = ListBox1.SelectedItem.Text; 
} 
+2

versione 27 è molto precoce versione beta - forse è un bug di Chrome? - dopotutto hai l'autopostback. – Aristos

+0

Se si imposta 'AutoPostBack =" true "' uguale a 'false', si verifica ancora? – Brian

+0

Per favore se hai versioni precedenti di Chrome, dai un'occhiata. – sohrab

risposta

2

Abbiamo notato questo sfortunato errore solo di recente, in una pagina che aveva lavorato senza alcun problema per un tempo molto lungo . È specifico per Google Chrome versione 27, e attualmente sto usando la versione 26.

Il bug: (facendo clic in qualsiasi punto all'interno del controllo - la barra di scorrimento è al centro del problema - provoca un postback completo [purché tu abbia impostato l'attributo AutoPostBack su true])

Il bug potrebbe essere ad un livello più alto di scripting e non sono sicuro che riguardi tutti i nostri listbox. Sembra improbabile dato che ne abbiamo molti, su più pagine, e riceveremmo chiamate se tutti loro esibissero questo comportamento.

La nostra soluzione conteneva due opzioni, con un'altra opzione meno elegante: 1) Impraticabile: attendere un aggiornamento per Google Chrome, oppure utilizzare esplicitamente la versione 26. Questo non è pratico per una grande base di utenti che non ha le autorizzazioni per l'installazione o la possibilità di eseguire il rollback a una versione precedente. Inoltre, non funziona se, per qualsiasi ragione, devi assolutamente testare l'ultima versione di Chrome.

2) Abbiamo accesso ai controlli Telerik che ci consentono di utilizzare RadListBox invece, un po 'più di overhead viewstate che potrebbe non essere una buona soluzione per voi, se è un'opzione affatto. Questa era l'opzione che abbiamo scelto, dato che RadListBox sfugge al comportamento problema.

Una terza soluzione molto meno interessante: trova qualche altra alternativa per visualizzare i tuoi dati, come un elenco a discesa, possibilmente con un controllo secondario di selezione secondaria se hai a che fare con un set di informazioni particolarmente ampio. È più lavoro, nel frattempo, e probabilmente vorrai annullare le modifiche quando è stata fatta una correzione.

So che tutte queste sono soluzioni mediocri, ma sono possibili soluzioni alternative. Scusa se questo non è di grande aiuto.

+0

Una soluzione metodologica per questo problema in Chrome 27: l'utente seleziona l'elemento attualmente evidenziato in ListBox per focalizzare il controllo. L'utente può quindi manipolare la barra di scorrimento senza attivare l'evento postback. Questo ovviamente non è una soluzione ragionevole per consegnare a un cliente, ma consente il controllo del controllo per scopi di debug. –

1

Disabilitare AutoPostBack per ListBox, utilizzare l'attributo onClick di ListBox per eseguire un javascript che esegue __doPostBack per esso. È un lavoro in giro. Penso che Google dovrebbe risolvere questo bug di Chrome (ver 27, e 28, ...). It, AutoPostBack True di ListBox, funziona perfettamente con tutti gli altri browser. TY Pien.

<script type="text/javascript"> 
function mypostback(id, parameter) 
{ 
    __doPostBack(id, parameter) 
} 
</script> 

<asp:ListBox ID="lstbox_id" runat="server" onclick="mypostback('lstbox_id','')"> 
</asp:ListBox> 
1

La funzione mypostback JavaScript non funziona se la casella di riepilogo ha SelectionMode="Multiple"

2

Questo è un bug in alcune versioni Chrome (come altri hanno notato). Avevo lo stesso comportamento su Chrome in una precedente versione v27.

È necessario aggiornare Chrome all'ultima versione: la mia versione è attualmente v 27.0.1453.116 me il problema sembra essere risolto in questa versione.

1

È sicuramente un bug in Chrome (ad esempio v.27.0.1453.110 m). Vedi anche this answer.

Problemi correlati