2009-06-26 10 views
6

मुझे onet.xml में वेब पार्ट कनेक्शन निर्दिष्ट करने की आवश्यकता है। तो जब साइट को इस साइट परिभाषा का उपयोग करके बनाया गया है तो कहा गया वेब पार्ट्स पहले ही जुड़े हुए हैं और उपयोग करने के लिए तैयार हैं। Onet.xml में उस विशेष वेब पार्ट्स के लिए मुझे किन गुणों को निर्दिष्ट करने की आवश्यकता है।साइट परिभाषाओं में वेब पार्ट कनेक्शन

उत्तर

3

मैंने पिछले कुछ वर्षों में दीवार पर भी हिट किया है! ऐसा लगता है कि नए .webpart प्रारूप में वेब पार्ट्स पर कनेक्शन अब निर्दिष्ट नहीं किए जा सकते हैं क्योंकि वे पुराने .dwp प्रारूप में हो सकते हैं। मैं साइट परिभाषा में कस्टम फीचर सहित समाप्त हुआ जैसे कि केपीनैक भी सुझाव देता है। वेब पार्ट्स को जोड़ने के लिए मेरा कोड नीचे सूचीबद्ध है। विधि को विभिन्न प्रकार के दो वेब पार्ट्स को जोड़ने के लिए डिज़ाइन किया गया है - यह उसी पृष्ठ पर एक ही प्रकार के एकाधिक वेब पार्ट्स का समर्थन नहीं करता है। लेकिन मुझे यकीन है कि आप सामान्य विचार को पकड़ लेंगे।

private void ConnectWebParts(SPWeb web, string pageName, Type providerType, Type consumerType) 
{ 
    SPFile file = web.GetFile(pageName); 
    SPList list = null; 
    if (file.InDocumentLibrary) 
    { 
    list = file.Item.ParentList; 
    if (list.ForceCheckout) file.CheckOut(); 
    } 

    SPLimitedWebPartManager webPartManager = 
    web.GetLimitedWebPartManager(
     pageName, 
     System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared); 

    WebPart provider = null; 
    foreach (WebPart wp in webPartManager.WebParts) 
    { 
    if (wp.GetType() == providerType) 
    { 
     provider = wp; 
     break; 
    } 
    } 

    foreach (WebPart consumer in webPartManager.WebParts) 
    { 
    if (consumer.GetType() != consumerType) continue; 

    ProviderConnectionPointCollection providerConnections = webPartManager.GetProviderConnectionPoints(provider); 
    ProviderConnectionPoint providerConnection = providerConnections[0]; 

    ConsumerConnectionPointCollection consumerConnections = webPartManager.GetConsumerConnectionPoints(consumer); 
    ConsumerConnectionPoint consumerConnection = consumerConnections[0]; 

    SPWebPartConnection con = webPartManager.SPConnectWebParts(provider, providerConnection, consumer, consumerConnection); 
    webPartManager.SPWebPartConnections.Add(con); 
    } 

    if (list != null) 
    { 
    if (list.ForceCheckout) 
    { 
     file.CheckIn("Added Web Part Connections"); 
    } 

    if (list.EnableVersioning && list.EnableMinorVersions) 
    { 
     file.Publish("Added Web Part Connections"); 
    } 
    } 
} 
+0

सुविधा कोड प्रदान करने के लिए धन्यवाद। यह वास्तव में मदद की –

0

मैं 'ऑनएक्टेड'-इवेंटहाउंडर को लागू करके साइटप्रोविजनिंग-फ़ीचर में वेबपार्ट कॉन्फ़िगर करता हूं। इस तरह से कोड चलाए जाने पर कोड चलाएगा, और आप जिस तरह से इसे पसंद करते हैं, त्रुटियों को संभाल सकते हैं (यानी यदि वेबसाइट बनाई गई है तो वेबपर्ट उपलब्ध नहीं हैं - किसी भी कारण से)

मुझे उम्मीद है कि इससे मदद मिलती है!

+0

इस साइट परिभाषा वेब हिस्सा कनेक्शन प्रदान करने के लिए एक ही रास्ता है? क्या मैं सिर्फ onet.xml में वेबपार्ट कनेक्शन गुण निर्दिष्ट नहीं कर सकता। मुझे लगता है कि शेयरपॉइंट 2003 में दो वेब पार्ट प्रोपर्टीज "कनेक्शनिड" और "कनेक्शन" थे। क्या मैं इसका उपयोग नहीं कर सकता? अगर हाँ कैसे? समाधान के लिए –

+0

धन्यवाद kpinhack। –

0

आप संलग्न < WebPart> तत्वों के भीतर अपने कनेक्शन के लिए अपने वेब भागों घोषित करने के लिए < AllUsersWebPart> टैग का उपयोग करें, और उसके बाद घोषित करने के लिए की आवश्यकता होगी।

example

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