c# - devolución de datos al desplazarse por ListBox en Chrome
asp.net google-chrome (6)
Hemos notado este desafortunado error recientemente, en una página que ha estado funcionando sin problemas durante mucho tiempo. Es específico de Google Chrome versión 27, y actualmente estoy usando la versión 26.
El error: (haciendo clic en cualquier lugar dentro del control, la barra de desplazamiento es el foco del problema) causa una devolución de datos completa [siempre que establezca el atributo AutoPostBack en verdadero])
El error podría estar en un nivel más alto de scripting, y no estoy seguro de que afecte a todas nuestras listboxes. Parece poco probable ya que tenemos muchos, en varias páginas, y recibiríamos llamadas si todos exhibieran este comportamiento.
Nuestra solución contenía dos opciones, con otra opción menos elegante: 1) Impractical: esperar una actualización de Google Chrome o usar la versión 26 explícitamente. Esto no es práctico para una gran base de usuarios que no tiene permisos para la instalación o la capacidad de retrotraer a una versión anterior. Tampoco funciona si, por cualquier razón, debe probar absolutamente contra la última versión de Chrome.
2) Tenemos acceso a los controles Telerik que nos permiten usar RadListBox en su lugar, un poco más de sobrecarga de estado de vista que puede no ser una buena solución para usted, si es una opción. Esta fue la opción que elegimos, ya que el RadListBox escapa al comportamiento problemático.
Una tercera solución distante, sustancialmente menos atractiva: encuentre alguna otra alternativa para mostrar sus datos, como una lista desplegable, posiblemente con un control de subselección secundario si está tratando con un conjunto particularmente grande de información. Mientras tanto, es más trabajo, y es probable que desee revertir los cambios cuando se haya solucionado.
Sé que todas estas son soluciones mediocres, pero son soluciones posibles. Lo siento si esto no es de mucha ayuda.
con el cuadro de lista de desplazamiento, la página se actualizará (no deseada).
este problema solo está en chrome (Versión 27). En otros navegadores, funciona correctamente.
archivo .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>
archivo .cs:
protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
label1.Text = ListBox1.SelectedItem.Text;
}
La función de JavaScript mypostback no funciona si el cuadro de lista tiene SelectionMode="Multiple"
Deshabilite el AutoPostBack para el ListBox, use el atributo onClick del ListBox para ejecutar un javascript haciendo __doPostBack para él. Es un trabajo alrededor. Creo que Google debería corregir esta falla de Chrome (ver 27 y 28, ...). Es, AutoPostBack True of ListBox, funciona bien en todos los otros navegadores. 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>
Este es un error en algunas versiones de Chrome (como otros han notado). Estaba obteniendo el mismo comportamiento en Chrome en una versión anterior de v27.
Debe actualizar Chrome a la versión más reciente: mi versión es actualmente v 27.0.1453.116 my el problema parece estar solucionado en esta versión.
Este es un problema en v27 de Chrome, la actualización a la última versión debería solucionarlo.
http://googlechromereleases.blogspot.co.uk/2013/06/stable-channel-update_18.html
Definitivamente es un error en Chrome (egv27.0.1453.110 m). Ver esta respuesta también.