asp.net repeater itemcommand

Repetidor de ASP.Net Elemento El comando no se dispara



repeater itemcommand (12)

Aquí está el código que tienes que usar en el código que está detrás.

después del evento PageLoad,

protected void Page_Load(object sender, EventArgs e) { } protected void Page_LoadComplete(object sender, EventArgs e) { // Bind Your Repeater here rptUser(); }

ahora puedes disparar tu comando de artículo ... si obtienes salida, marca la respuesta como correcta gracias

OK, he usado repetidores literalmente cientos de veces sin problemas, pero algo ha salido mal hoy. Tengo un repetidor y me suscribo al evento itemCommand, pero cuando mi comando se ejecuta, la página se devuelve pero el evento no se activa.

Para evitar esto, tengo que hacer mi enlace de datos en cada devolución de datos.

Mi repetidor se ve así:

<asp:Repeater id="MyRepeater" runat="server" onitemcommand="MyRepeater_ItemCommand"> <ItemTemplate> <li> <asp:Label id="Label" runat="server" /> <asp:LinkButton id="LinkButton1" runat="server" commandname="Complete" commandargument=''<%# Eval("MyID") %>'' text=''<%# Eval("Title") %>'' /> </li> </ItemTemplate> </asp:Repeater>

y mi código es así:

protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { SetupPage(); } } private void SetupPage() { // Do other stuff MyRepeater.DataSource = Repository.GetStuff() MyRepeater.DataBind(); } protected void MyRepeater_ItemCommand(object sender, RepeaterCommandEventArgs e) { // Do all my stuff here }

MyRepeater_ItemCommand no recibe llamadas a menos que comente la línea if (! IsPostBack). Una vez que se comenta y el repetidor obtiene un enlace de datos en cada devolución, funciona bien. He hecho esto en muchas otras páginas, pero al respecto no parece funcionar.

¿Alguien más se encuentra con este comportamiento o tiene una solución?


Elimine if (!IsPostBack) ya que esto evita que el repetidor se if (!IsPostBack) , y el evento de comando del elemento no pudo encontrar la fila después de la devolución.


Intente usar Page_init en lugar de Page_load y eso debería solucionar el problema.


Lo más probable es que haya deshabilitado ViewState para la página.

La razón es que cuando ejecuta la devolución de datos, todos los controles en el repetidor se reconstruyen a partir de los datos en el estado de visualización normalmente. Luego, el objeto que debe recibir el evento se identifica en función de la ID del control y el evento se enruta.

Si deshabilita el estado de vista, el árbol de control no se reconstruye durante la devolución de datos y, por lo tanto, el control que debe recibir el evento no existe en la memoria. Así que el evento muere.

Si realmente desea deshabilitar el estado de visualización, pero aún desea recibir el evento, tengo una solución (y no está nada sucia). Durante mucho tiempo he estado pensando en escribir una entrada de blog al respecto, así que si quieres, puedo tomarme un poco de tiempo en mis tareas normales y describirlo.

Edición: la solución se describe aquí: http://petesdotnet.blogspot.dk/2009/08/asp.html


No estoy seguro de esto, pero es posible que tenga que establecer las propiedades CommandName y, opcionalmente, CommandArgument para el botón que causa el evento ItemCommand . De lo contrario, ASP.NET supondría que no hay ningún botón en la página, por lo que le gustaría activar el evento. Puedes intentar eso.

Además, si no está diferenciando los nombres de los comandos, ¿por qué no usa el evento Click de cada botón? Solo suscríbase a aquellos en ItemCreated o ItemDataBound del repetidor.


Otra cosa que podría ser (como me acaba de ocurrir): si su enlace de datos tiene lugar cuando su página está en espera, no procesará el comando del elemento. Cambia a cargar o inicia y estarás bien.


Prueba esto:

protected void Page_Load(object sender, EventArgs e) { SetupPage(); }

Si utiliza un repetidor anidado, debe volver a enlazar su representación interna.


Puede ser que hayas establecido Validaciones en tu página. Así que establezca un nuevo atributo, causevaliation = "false" en el botón Vincular. M Seguro que solucionará el problema.


Tengo el mismo problema y aparte de usar el panel de actualización, tengo un validador de campo requerido en mi modal. Descubrí que los LinkButtons en mi repetidor activan el evento requiredFieldValidor y luego agregué CausesValidation = "false" en los LinkButtons de mi repetidor. Funciona como se espera.


Tengo este problema en un repetidor cuando uso ImageButton ... Busco en la red esta solución cuando funciona LinkButton, pero no ImageButton ...

Entonces pienso, ¿LinkButton funciona? así que lo usaré :)

<asp:LinkButton CommandName="Filter" CommandArgument=''<%# Eval("ID") %>'' Text="" runat="server" > <asp:image imageurl=''<%#Eval("Img") %>'' runat="server"/> </asp:LinkButton>

Entonces, la imagen está dentro de la etiqueta <A>

que te diviertas :)


Tuve un problema similar: resultó que algunos controles de validación discretos disparaban en otra parte de la página. Solo me tomó un día para averiguarlo ...


Eliminé la propiedad PostBackUrl en el botón de enlace y se disparó ItemCommand. Creo que la devolución de datos se ejecuta primero.