2011-04-13 10 views
27

का कारण बनता है मेरे पास एक UpdatePanel में ListView में एक लिंकबटन है। मैं बटन (अच्छी तरह से, उनमें से कोई भी) आंशिक पोस्टबैक का कारण बनूंगा, लेकिन वे एक पूर्ण पृष्ठ पोस्टबैक कर रहे हैं।UpdatePanel में ListView में लिंकबटन पूर्ण पोस्टबैक

<asp:UpdatePanel ID="upOutcomes" UpdateMode="Conditional" runat="server"> 
    <ContentTemplate> 
     <asp:ListView ID="lvTargets" runat="server" onitemdatabound="lvTargets_ItemDataBound"> 
     <ItemTemplate> 
      <asp:LinkButton ID="lnkAddTarget" CssClass="lo" Text='<%# Eval("Title") + " <b>" + Eval("Level") + Eval("SubLevel") + "</b>" %>' runat="server"></asp:LinkButton> 
     </ItemTemplate> 
     </asp:ListView> 
    </ContentTemplate> 
</asp:UpdatePanel> 

मैं जो इस जोड़ने का सुझाव दिया stackoverflow पर एक और पोस्ट पाया:

protected void lvTargets_ItemDataBound(object sender, ListViewItemEventArgs e) { 
    var lb = e.Item.FindControl("lnkAddTarget") as LinkButton; 
    tsm.RegisterAsyncPostBackControl(lb); // ToolkitScriptManager 
} 

यह एक अंतर नहीं किया है ...

कुछ अन्य इसी तरह के पदों भी हैं, लेकिन मैं समाधान नहीं मिल रहा है! कोई विचार?

+0

बस कोशिश की, धन्यवाद। हालांकि कोई भाग्य नहीं है। :(मुझे इसे सशर्त रूप से अद्यतन करने की आवश्यकता है। – James

+0

नियंत्रण के साथ संग्रह को पॉप्युलेट करने का प्रयास करें जो पैनल को अपडेट करेगा, भले ही नियंत्रण पैनल के भीतर हो। –

+0

मैं यह कैसे करूँगा? 'LnkAddTarget' ListView के बाहर दिखाई नहीं दे रहा है धन्यवाद। – James

उत्तर

38

एएसपी.नेट 4 में क्लाइंट आईडीमोड सेटिंग आपको यह निर्दिष्ट करने देती है कि एएसपी.NET HTML तत्वों के लिए आईडी विशेषता कैसे उत्पन्न करता है।

एएसपी.नेट (यानी पूर्व 4) के पिछले संस्करणों में, डिफ़ॉल्ट व्यवहार क्लाइंट आईडीमोड की ऑटोआईडी सेटिंग के बराबर था। हालांकि, डिफ़ॉल्ट सेटिंग अब अनुमानित है।

Read Microsoft Article

AutoId क्योंकि जिस तरह से स्क्रिप्ट प्रबंधक उम्मीद एचटीएमएल नियंत्रण नेट के पिछले संस्करणों में उत्पन्न करने के लिए इस के लिए आवश्यक है। ClientIDMode = "AutoID" इतनी तरह लागू पेज के पेज के निर्देश पर: <%@ Page Title="" ClientIDMode="AutoID" Language="C#"%>, इस प्रकार एक पूर्ण पोस्टबैक पैदा करने के लिए एक ListView के भीतर एक एएसपी linkbutton होने के अपने पिछले समस्या को हल करने

+1

धन्यवाद। यह मुझे आधे दिन के लिए पागल कर दिया। जहां तक ​​मैंने कोशिश की, मुझे लिंकबटन में एक आईडी डालना पड़ा और पेज निर्देश में ऑटोआईडी डालना पड़ा। – Larry

+1

आधा दिन? मैं इस पर एक सप्ताह से अधिक समय से काम कर रहा हूं .. मैंने सोचा कि यह मेरा अपडेटपेनल या कुछ अन्य निराला नियंत्रण था जिसका मैं उपयोग कर रहा था। बाहर निकलता है यह सिर्फ मेरा लिंकबटन था .. गाह ... – Rob

+1

धन्यवाद मेरे अच्छे आदमी। मैंने एक डेटालिस्ट से एक सूची दृश्य में स्विच किया और यह पता नहीं लगा सका कि मेरा अपडेटपैनल अचानक काम क्यों बंद कर रहा है – Dogoku

0

इस तरह CommandName, CommandArgument गुण और अपने linkbutton को OnCommand ईवेंट हैंडलर जोड़ने का प्रयास करें:

<asp:LinkButton CommandName='test' CommandArgument='<%# Eval("Title") %>' ID="lnkAddTarget" runat="server" OnCommand="LinkButtonCommandEventHandler" /> 

या - पूरे ListView को OnItemCommand हैंडलर जोड़ने।

+0

विचार के लिए धन्यवाद लेकिन इससे कोई फर्क नहीं पड़ता। – James

0

मैं सेट करके इस समस्या का समाधान।

हालांकि, यह आवश्यक हो सकता है कि क्लाइंट कोड (Jquery, जावास्क्रिप्ट) पर किसी भी एएसपी नियंत्रण को इसके पूर्ण नाम से संदर्भित किया जाए क्योंकि यह ब्राउज़र स्रोत कोड में दिखाई देता है (मैं नाम प्राप्त करने के लिए फ़ायरफ़ॉक्स में फ़ायरबग का उपयोग करता हूं)। लागू पेज के पेज के निर्देश पर ClientIDMode = "AutoID": उदाहरण के लिए, इस jQuery समारोह $("#ContentPlaceHolder1_btnCancelReferCustomer").click(function() { $("#divRefer").hide({ effect: "slide", duration: 200 }); return false; }); (कृपया चयनकर्ता में एएसपी बटन का नाम बदलने पर ध्यान दें) इस में बदल गया था: $("#ctl00_ContentPlaceHolder1_btnCancelReferCustomer").click(function() { $("#divRefer").hide({ effect: "slide", duration: 200 }); return false; });

0

मैं द्वारा की स्थापना इस समस्या का समाधान इस तरह: <% @ पृष्ठ शीर्षक = "" क्लाइंट आईडीमोड = "ऑटोआईडी" भाषा = "सी #"%>

संबंधित मुद्दे