2012-01-03 14 views
13

私のページでは、リピータ内にLinkBut​​tonがありますが、UpdatePanelはLinkBut​​tonをAsyncPostBackTriggerに見つけることができません。ここでリピータ内のLinkBut​​tonのAsyncPostBackTriggerを行う方法

はここ

<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> 

mycode.aspxある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"); 
    } 

である私は、多くの方法を試してみましたが、ページはまだ更新しています。提案はありますか?

答えて

41

リピーターコントロールのItemCreatedイベントは、ScriptManagerでボタンを登録します。リピーターとLinkBut​​tonコントロールを含むページディレクティブに次の属性を追加する

//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); 
} 
+0

はあなたにたくさんありがとうございました。それは仕事です! – user1128331

+0

ありがとうEugene。私のために多くの時間を節約しました。乾杯する –

+0

私はリピータのリンクボタンをupdatepanelの中​​から非同期のポストバックの代わりに完全なポストバックをするようにしなければなりません。これは完璧に機能しました。代わりに 'scripMan.RegisterPostBackControl(btn)'を使用しました。 – ahwm

11

も動作します:

​​

が、私はそう使用して、両方の非同期およびフルポストバックを仕事に必要なコントロールを持っていましたScriptManager.RegisterAsyncPostBackControlは私にとってはうまくいかないでしょう。 UpdatePanel内部にコントロール(リピーターとリンクボタンを含む)を囲むことで、リンクボタンが非同期ポストバックを引き起こします。 updatepanelを使用しない場合、リンクボタンは全ポストバックを引き起こします。

これは他の人に役立つことを願っています。

12

私は同様の問題を抱えていたが、私はリピーターを追加

1だったので、私がやった全体リピータ、リピータの外でのみコンテンツを...更新したくなかった

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

2.更新可能なコンテンツと更新パネルを追加し、トリガー

<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> 
+1

これを共有してくれてありがとう!まさに私がやろうとしていたこと:-) – Oliver

+0

私はこれを好む – Yorro

関連する問題