2012-01-03 26 views
13

में लिंकबटन के लिए AsyncPostBackTrigger कैसे करें मेरे पृष्ठ में, मेरे पास दोहराने के अंदर एक लिंकबटन है, लेकिन UpdatePanel को लिंकबटन को 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

पुनरावर्तक नियंत्रण की मदरेटेड घटना के अंदर स्क्रिप्ट मैनेजर के साथ बटन पंजीकृत करें।

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

धन्यवाद यूजीन। मेरे लिए बहुत समय बचाया। चीयर्स –

+0

मुझे इसके विपरीत करने की ज़रूरत है - दोहराने वाले में एक लिंक बटन को अपडेट पैनेल के भीतर से एसिंक पोस्टबैक के बजाय पूर्ण पोस्टबैक करें। यह इसके लिए पूरी तरह से काम किया। मैंने बस 'scripMan.RegisterPostBackControl (btn)' का उपयोग किया। – ahwm

11

पुनरावर्तक और linkbutton युक्त पेज निर्देश के लिए निम्नलिखित गुण जोड़ना भी काम करेगा:

<%@ page ClientIDMode="AutoID" %>

मैं एक नियंत्रण दोनों एसिंक्रोनस रूप से और पूर्ण पोस्टबैक काम करने के लिए आवश्यक है कि थी, इसलिए का उपयोग कर ScriptManager.RegisterAsyncPostBackControl मेरे लिए काम नहीं करेगा। एक अपडेटपेनल के अंदर नियंत्रण (जिसमें दोहराना और लिंकबटन शामिल था) को संलग्न करके, लिंकबटन एक असीमित पोस्टबैक का कारण बनता है। कोई अपडेट पैनेल नहीं होने पर, लिंकबटन एक पूर्ण पोस्टबैक का कारण बनता है।

उम्मीद है कि यह किसी और की मदद करेगा।

12

मैं इसी तरह की समस्या थी, लेकिन मैं पूरी पुनरावर्तक, पुनरावर्तक के बाहर केवल एक सामग्री ... तो क्या मैंने किया था

1. पुनरावर्तक जोड़े अद्यतन करने के लिए नहीं करना चाहता था

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

2. updatable सामग्री के साथ अद्यतन पैनल, और ट्रिगर

<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