update sirve que para panelupdate net asyncpostbacktrigger asp asp.net ajax updatepanel repeater linkbutton

asp.net - sirve - update panel asp net vb



Cómo hacer AsyncPostBackTrigger para el LinkButton en el Repetidor (3)

En mi página, tengo un LinkButton dentro del repetidor, pero UpdatePanel no puede encontrar el LinkButton a AsyncPostBackTrigger.

Aquí está mycode.aspx

<asp:ScriptManager ID="Test1" runat="server" /> <asp:UpdatePanel ID="TestUpdate" runat="server" UpdateMode="Always"> <ContentTemplate> <table width="100%"> <tr valign="top"> <td width="50%"> <asp:Repeater ID="productList" runat="server" onitemcommand="productList_ItemCommand"> <HeaderTemplate> <ul type="disc"> </HeaderTemplate> <ItemTemplate> <li> <asp:Label id="L1" runat="server" Text=''<%# Eval("productName") %>''></asp:Label><br /> Price: <asp:Label runat="server" Text=''<%# Eval("productPrice") %>'' ></asp:Label>&nbsp;Bath<br /> <img alt="" src="Images/product/product<%# Eval("productID") %>.png" style="width: 200px; height: 130px" /><br /> <asp:TextBox ID="num_product" runat="server" Text="0"></asp:TextBox><br /> <asp:LinkButton ID="order_button" runat="server"><img alt="" src="~/Images/button/order.png" /></asp:LinkButton> </li> </ItemTemplate> <FooterTemplate> </ul> </FooterTemplate> </asp:Repeater> <td> <span class="labelText">Order list</span> <asp:BulletedList ID="orderList" runat="server" BulletStyle="Numbered"> </asp:BulletedList> </td> </tr> </table> </ContentTemplate> </asp:UpdatePanel>

Aquí está mycode.aspx.cs

protected void productList_ItemCommand(object source, RepeaterCommandEventArgs e) { //button /*LinkButton btn = new LinkButton(); btn.ID = "order_button"; btn.Click += LinkButton1_Click; Test1.RegisterAsyncPostBackControl(btn);*/ LinkButton btn = (LinkButton)e.Item.FindControl("order_button"); btn.Click += LinkButton1_Click; Test1.RegisterAsyncPostBackControl(btn); /*AsyncPostBackTrigger trigger = new AsyncPostBackTrigger(); trigger.ControlID = btn.ClientID; trigger.EventName = "Click"; TestUpdate.Triggers.Add(trigger);*/ } protected void LinkButton1_Click(object sender, EventArgs e) { //string name = ProductName1.Text.ToString(); //int price = System.Convert.ToInt32(ProductPrice1.ToString(), 10); //int number = System.Convert.ToInt32(TextBox1.ToString(),10); //orderList.Items.Clear(); //orderList.Items.Add(new ListItem(name)); //ListItem product1 = new ListItem(); //product1.Text = name; orderList.Items.Add("test"); }

He intentado muchos métodos, pero la página todavía está actualizada. ¿Tienes alguna sugerencia?


Agregar el siguiente atributo a la directiva de página que contiene el repetidor y el botón de enlace también funcionará:

<%@ page ClientIDMode="AutoID" %>

Tenía un control que necesitaba para funcionar tanto de forma asincrónica como de devolución completa, por lo que usar el ScriptManager.RegisterAsyncPostBackControl no funcionaría para mí. Al encerrar el control (que contenía un repetidor y un botón de enlace) dentro de un Panel de Actualización, el botón de enlace causaría una devolución de datos asincrónica. Sin ningún panel de actualización, el botón de enlace causaría un fullpostback.

Espero que esto ayude a alguien más.


En el evento ItemCreated del control Repeater, registre el botón con ScriptManager.

//Inside ItemCreatedEvent ScriptManager scriptMan = ScriptManager.GetCurrent(this); LinkButton btn = e.Item.FindControl("order_button") as LinkButton; if(btn != null) { btn.Click += LinkButton1_Click; scriptMan.RegisterAsyncPostBackControl(btn); }


Tuve un problema similar, pero no quería actualizar todo el repetidor, solo un contenido fuera del repetidor ... así que lo que hice fue

1. Añadir el repetidor.

<asp:Repeater ID="productList" runat="server"> <!-- my repeater --> <asp:Repeater>

2. Agregue el Panel de actualización con el contenido actualizable y el desencadenador

<asp:UpdatePanel ID="up" runat="server"> <ContentTemplate> <!-- when the click on repeater''s links, this content will be updated --> </ContentTemplate> <Triggers> <!-- trigger will be the repeater''s links/btn that generate postback --> <asp:AsyncPostBackTrigger ControlID="productList" /> </Triggers> </asp:UpdatePanel>