2009-06-26 21 views
6

Web bölümü bağlantılarını onet.xml dosyasında belirtme zorunluluğum var. Dolayısıyla site bu site tanımı kullanılarak oluşturulduğunda, söz konusu web parçaları zaten bağlanmış ve kullanıma hazırdır. Bu web siteleri için hangi özellikleri belirtmem gerekiyor onet.xml.Web Sitesi bağlantıları site tanımlarında

cevap

3

Ayrıca geçen sene bu duvara da vurdum! Web Bölümlerinde eski .dwp biçiminde yeni wwpart biçiminde artık bağlantı belirtilemez gibi görünüyor. Kpinhack da önerdiği gibi site tanımında özel bir özellik dahil sona erdi. Web Bölümlerini bağlamak için kodum aşağıda listelenmiştir. Yöntem, yalnızca farklı türden iki Web Bölümünü bağlamak için tasarlanmıştır - aynı sayfada aynı türde birden çok Web Bölümünü desteklemez. Ama eminim genel fikri yakalayacaksın.

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

Özellik kodunu sağladığınız için teşekkür ederiz. Gerçekten yardımcı oldu –

0

WebPart'ları 'OnActivated'-Eventhandler'ı uygulayarak SiteProvisioning-Feature'da yapılandıracağım. Bu şekilde, kod web sitesi oluşturulduğunda çalışacaktır ve hataları istediğiniz gibi ele alabilirsiniz (yani, WebParts web sitesi oluşturulduğunda kullanılamıyorsa - neden olursa olsun)

Umarım bu yardımcı olur!

+0

Site tanımında web bölümü bağlantısı sağlamanın tek yolu bu mu? Webpart bağlantı özelliklerini sadece onet.xml dosyasında belirtemiyorum. Ben sharepoint 2003 yılında iki web parçası proeprties orada "connectionid" ve "bağlantılar" vardı düşünüyorum. Ben aynı kullanmıyorum? eğer evet nasıl? –

+0

Çözüm için kpinhack teşekkürler. –

0

Ekteki < WebPart> elemanları içinde bağlantıları web parçalarını beyan etmek < AllUsersWebPart> etiketini kullanın ve sonra ilan etmek gerekir.

example