2008-10-01 14 views
5

कहें कि आपके पास कई वेबपर्ट हैं, एक नियंत्रक के रूप में और कई जो नियंत्रक से जानकारी लेते हैं और उस पर कार्य करते हैं। एएसपी 2.0 में पेश उपभोक्ता/निर्माता इंटरफ़ेस का उपयोग करके मॉडल के लिए यह काफी आसान है।शेयरपॉइंट वेबपार्ट्स

उपर्युक्त बनाए रखने के दौरान आप अन्य तरीकों से बातचीत कैसे कर पाएंगे?

एक साधारण उदाहरण होगा: उपयोगकर्ता वेबपार्ट ए में जानकारी दर्ज करता है जो खोज करता है और परिणाम वेबपार्ट बी पर प्रदर्शित किए जाएंगे। वेबपार्ट सी आपको उन परिणामों को फ़िल्टर करने की अनुमति देता है जो वेबपार्ट ए को ट्रिगर करने के लिए क्वेरी को फिर से सबमिट करना चाहिए और इसलिए बी

में परिणाम अपडेट करें WSS 3.0 में ऐसा करना प्रतीत नहीं होता है क्योंकि आपको किसी भी समय सभी कनेक्शनों में केवल 1 इंटरफ़ेस का उपयोग करने की अनुमति है।

क्या यह भी समझ में आता है? :-)

उत्तर

2

मनमाने ढंग से नियंत्रण संचार सक्षम करने के लिए एक त्वरित और गंदा समाधान रिकर्सिव खोज नियंत्रण और घटनाओं का उपयोग करना है। नियंत्रण नियंत्रण कक्ष द्वारा नियंत्रण पेड़ को उनकी आवश्यकता के लिए खोज करें और फिर प्रकाशन नियंत्रण पर सार्वजनिक रूप से उजागर घटनाओं की सदस्यता लें।

मैंने पिछली बार एक विशिष्ट संचार एपीआई से बचने के लिए अलग-अलग विक्रेताओं से सीएमएस सिस्टम में एम्बेडेड होने पर मानक सर्वर नियंत्रण को सक्षम करने के लिए चाल का उपयोग किया है।

+0

यह थोड़ा बुरा है: डी –

1

मुझे वेबपार्ट ए के साथ कुछ भी गलत नहीं दिख रहा है वेबपेट बी का संदर्भ प्राप्त करना और सार्वजनिक/आंतरिक विधियों/गुणों को कॉल करना या हैंडलर को सार्वजनिक/आंतरिक घटनाओं में सब्सक्राइब करना। हालांकि ऐसा करने पर उल्लेख करने का एक बिंदु: EnsureChildControls। मैंने अपनी आंखों के साथ देखा है एक वेबपार्ट प्रीरेंडर को स्पष्ट किया जा रहा है जबकि एक अन्य वेबपार्ट ने CreateChildControls भी नहीं चलाया था।

webpart एक से, बी webpart करने के लिए अपने संदर्भ लाने इसलिए की तरह (इस मामले webpart बी में प्रकार कैलेंडर की है):

 private Calendar _calendarWP = null; 
    public Calendar CalendarWP 
    { 
     get 
     { 
      if (_calendarWP != null) 
       return _calendarWP; 
      else 
       foreach (System.Web.UI.WebControls.WebParts.WebPartZone zone in this.WebPartManager.Zones) 
        foreach (System.Web.UI.WebControls.WebParts.WebPart webpart in zone.WebParts) 
         if (webpart is Calendar) 
         { 
          _calendarWP = (Calendar)webpart; 
          _calendarWP.EnsureChildControls(); 
          return _calendarWP; 
         } 
      return null; 
     } 
    } 

अब आप कुछ नए डेटा लाने और तरह कैलेंडर अद्यतन जैसे काम कर सकें इसलिए:

  IEnumerable newData = SomeDataProvider.GetNewData(args); 
     CalendarWP.someGridView.DataSource = newData; 
     CalendarWP.someGridView.DataBind(); 

या शायद जाने webpart एक ही के लिए एक संदर्भ के ऊपर टॉस तो यह एक के सार्वजनिक/आंतरिक गुण webpart का उपयोग खुद के लिए डेटा लाने जाने के लिए कर सकते हैं बी webpart के लिए:

CalendarWP.UseWPAToFetchData(this); 
संबंधित मुद्दे