Si usa imagen como tipo de botón en gridview, el evento de comando de fila se ejecutará dos veces cuando se active. Se dice que solo aparece en IE6, IE5, Firefox, etc. No hay ningún problema. Mi IE7 también tiene lo mismo. El problema parece estar relacionado con la versión de IIS. Espero con ansias el parche de Microsoft.
Encontré un problema esta tarde. El evento de comando de fila de gridview se ejecutó dos veces y la devolución de datos también se ejecutó dos veces. Al principio sospeché que era un problema con el depurador. Después de verificar el registro, confirmé que en realidad era un problema. ejecutado dos veces.
Revisé el código n veces y lo eliminé oración por oración, pero aún así no encontré ningún problema. Comencé a sospechar que era el mouse. Capturé el paquete y descubrí que efectivamente se enviaron dos solicitudes y la primera solicitud no fue procesada. . De vez en cuando, cambié el tipo de botón de imagen a botón y funcionó inesperadamente. Solo se ejecutó una vez. Parece que el problema solo radica en Imagebutton.
A través de la búsqueda en Google, descubrí que muchas personas han encontrado este problema y definitivamente es un error de asp.net. Al hacer clic en el botón, se enviarán dos solicitudes a iis. La primera vez tiene ocho bytes menos que la segunda, lo que hace que la primera solicitud no tenga éxito y luego se enviará nuevamente. Por lo tanto, lo más fácil es ignorar el. primera solicitud, de la siguiente manera. Esta es la primera solución.
Actualmente existen dos soluciones, ninguna de las cuales es perfecta. La primera es agregar la siguiente declaración al evento de comando de fila:
if (Solicitud["x"] == nulo && Solicitud["y"] == nulo)
Respuesta.End();
A través de esta declaración se determinan las coordenadas de la imagen. Si las coordenadas son nulas, es la primera solicitud. Debido a que la primera solicitud no es válida, finalícela.
Microsoft recomienda el segundo: intente no usar el botón de imagen en la vista de cuadrícula, pero use un enlace o un botón. Si debe usarlo, puede usar un código similar:
<asp:GridView ID="GridView1" runat="servidor">
<Columnas>
<asp:campo de plantilla>
<Plantilla de artículo>
<asp:ImageButton runat=servidor id="ImageButton1" CommandName="Eliminar"
ImageUrl="" commandargument='<%# DataBinder.Eval(Contenedor,
"RowIndex") %>' OnCommand="ImageButton1_Command" />
</ItemTemplate>
</asp:TemplateField>
</Columnas>
</asp:GridView>
protected void ImageButton1_Command(remitente del objeto, CommandEventArgs e) {
GridView1.DeleteRow(Int32.Parse(e.CommandArgument.ToString()));
}
Agregue imagebuttong a TemplateField y llame a deleterow en el evento.
No sé si existe una solución mejor. El siguiente foro analiza este problema en detalle:
http://www.developersdex.com/asp/message.asp?p=1116&r=4641456&page=2 El resultado de la discusión en la primera página es: Este problema solo ocurrirá cuando el tipo de botón sea imagen, que puede ser saltado No lo lea, hay discusiones y soluciones detalladas en las dos páginas siguientes.
Me he encontrado con problemas extraños todo el día de hoy y mi cabeza da vueltas. A menudo, el mismo código se puede ejecutar por un tiempo, pero no por un tiempo, y siguen sucediendo cosas extrañas en vs2005. ¡Simplemente simulé varios problemas que no se pudieron ejecutar por la tarde en casa y funcionó bien! ! mañana me va a doler la cabeza otra vez
http://www.cnblogs.com/bluewater/archive/2006/11/21/567871.html