2010-09-25 9 views
5

मेरे पास एक डेटालिस्ट है जिसमें लोगों के पास एक संग्रह है, जिसमें प्रत्येक व्यक्ति को बटन होता है, जब क्लिक किए जाने पर एसिंक्रोनस पोस्टबैक का कारण बनता है, तो ऑनक्लिक ईवेंट हैंडलर अपडेटपेनल में दिखाए गए विवरण को बदल सकता है [डेटालिस्ट के बाहर है UpdatePanel]।डेटालिस्ट में बटन से अपडेटपेनल के लिए हमेशा एक असीमित पोस्टबैक को कैसे ट्रिगर करें?

मैंने डेटालिस्ट के OnItemDataBound ईवेंट हैंडलर में UpdatePanel को बदलने के लिए बटन सेट करने के दो प्रयास किए हैं। एक AsyncPostBackTrigger को अद्यतन पैनेल में असाइन करता है और दूसरा ScriptAancPostBackControl को ScriptManager पर था। दोनों काम करते हैं लेकिन केवल पहली बार। यदि किसी अन्य व्यक्ति का बटन [या दूसरी बार एक ही बटन] दबाया जाता है तो पृष्ठ पूरी तरह से वापस पोस्ट किया जाता है।

अद्यतन पैनेल का अपडेटमोड सशर्त पर सेट है और स्क्रिप्ट मैनेजर में सक्षम पार्टनर रेन्डरिंग सक्षम पोर्टेबल रेंडरिंग सही है।

OnItemDataBound में कोड:

Button btnShowNotes = e.Item.FindControl("btnShowNotes") as Button; 

// Trigger 
AsyncPostBackTrigger trigger = new AsyncPostBackTrigger(); 
trigger.ControlID = btnShowNotes.UniqueID; 
trigger.EventName = "Click"; 
upDetails.Triggers.Add(trigger); // UpdatePanel 

// The trigger or this is used, not both 
ScriptManager1.RegisterAsyncPostBackControl(btnShowNotes); 

एक बार पहले Async PostBack हुआ है यह संदर्भ खोने के लिए लगता है, लेकिन निश्चित रूप से यह लगातार DataList rebind बिना कायम किया जा सकता है? जिस तरह से मैं कोशिश कर रहा हूं उसमें मुझे कुछ याद आना चाहिए।

+0

शायद सप्ताहांत पर उत्तरों की तलाश करना शायद सफल नहीं होगा, लेकिन कष्टप्रद [आमतौर पर] मुझे इसे सोमवार से पहले हल करने की आवश्यकता है क्योंकि नई सुविधाओं को सोमवार को लाइव होने की जरूरत है, और यह एकमात्र चीज है जो इसे पूरा होने से रोकती है! – Rich

उत्तर

3

मैं एक समाधान के साथ आया हालांकि मुझे यकीन नहीं है कि यह सबसे अच्छा/सबसे इष्टतम है। Page_Load विधि में प्रत्येक PostBack पर, मैं आइटम के माध्यम से लूप और बटन के लिए Aync PostBack रजिस्टर:

if (IsPostBack) 
{ 
    foreach (DataListItem item in gvAllUsers.Items) 
    { 
     btnShowNotes = item.FindControl("btnShowNotes") as ImageButton; 
     ScriptManager1.RegisterAsyncPostBackControl(btnShowNotes); 
    } 
} 
+0

यदि कोई बेहतर तरीके से आ सकता है तो मैं उन्हें उत्तर के रूप में चिह्नित करूंगा। वैसे भी मेरे अगले 11 घंटों तक नहीं हो सकता है। – Rich

0

ToolkitScriptManager1.RegisterAsyncPostBackControl (ibtnShowPicker) आप कोड Page_Load ibtnShowPicker ऊपर डाल करने के लिए है आईडी नाम

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