Comment faire AsyncPostBackTrigger pour le LinkButton dans le répéteur
Dans ma page, j'ai un LinkButton à l'intérieur de répétition, mais l'UpdatePanel ne peut pas trouver le LinkButton à AsyncPostBackTrigger.
Ici 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> 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>
Ici 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");
}
J'ai essayé plusieurs méthodes, mais la page est toujours d'actualisation. Avez-vous une suggestion?
source d'informationauteur user1128331
Vous devez vous connecter pour publier un commentaire.
À l'intérieur de ItemCreated cas de la Répétition registre de contrôle sur le bouton avec ScriptManager.
L'ajout de l'attribut suivant à la directive de page contenant le répéteur et linkbutton travaillera également:
<%@ page ClientIDMode="AutoID" %>
J'ai eu un contrôle que nécessaire de travailler de manière asynchrone et la publication complète, donc, en utilisant le ScriptManager.RegisterAsyncPostBackControl ne fonctionnerait pas pour moi. En joignant le contrôle (qui contenait un répéteur et linkbutton) à l'intérieur d'un UpdatePanel, le linkbutton serait la cause d'une publication asynchrone. Sans updatepanel, le linkbutton serait la cause d'une fullpostback.
Espère que cela aide quelqu'un d'autre.
J'ai eu le même problème, mais je ne voulais pas de mise à jour de l'ensemble de la répétition, seulement un contenu en dehors de la répétition... donc je l'ai
1. Ajouter le répéteur
2. Ajouter le Panneau de mise à Jour pouvant être mis à jour avec le contenu, et le déclencheur