2009-06-26 27 views
6

Tôi có yêu cầu xác định các kết nối phần web trong onet.xml. Vì vậy, khi trang web được tạo bằng cách sử dụng định nghĩa trang web này, các phần web đã được kết nối và sẵn sàng để sử dụng. Tôi cần chỉ định các thuộc tính nào cho các phần web cụ thể trong tệp onet.xml.Kết nối phần Web trong định nghĩa trang web

Trả lời

3

Tôi cũng đã nhấn vào bức tường này vào đôi khi năm ngoái! Có vẻ như các kết nối không còn có thể được chỉ định trên các Phần Web theo định dạng .webpart mới như chúng có thể ở định dạng .dwp cũ. Tôi đã kết thúc bao gồm một tính năng tùy chỉnh trong định nghĩa trang web như kpinhack cũng cho thấy. Mã của tôi để kết nối các Phần Web được liệt kê dưới đây. Phương pháp này chỉ được thiết kế để kết nối hai Phần Web với các kiểu khác nhau - nó không hỗ trợ nhiều Phần Web cùng loại trên cùng một trang. Nhưng tôi chắc chắn bạn sẽ nắm bắt được ý tưởng chung.

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

Cảm ơn bạn đã cung cấp mã tính năng. Nó thực sự đã giúp –

0

Tôi sẽ định cấu hình WebParts trong tính năng SiteProvisioning-Feature, bằng cách triển khai 'OnActivated'-Eventhandler. Bằng cách đó, mã sẽ chạy khi trang web được tạo và bạn có thể xử lý lỗi theo cách bạn muốn (ví dụ: nếu WebParts không khả dụng khi trang web được tạo - vì bất kỳ lý do gì)

Tôi hy vọng điều này sẽ hữu ích!

+0

Đây có phải là cách duy nhất để cung cấp kết nối phần web trong định nghĩa trang web không? Tôi không thể chỉ định các thuộc tính kết nối webpart trong onet.xml. Tôi nghĩ rằng trong SharePoint năm 2003 hai phần proeprties phần đã có "kết nối" và "kết nối". Tôi không thể sử dụng như vậy? nếu có thì sao? –

+0

cảm ơn kpinhack cho giải pháp. –

0

bạn sẽ cần phải sử dụng thẻ < AllUsersWebPart> để khai báo phần web của bạn, và sau đó tuyên bố các kết nối của bạn trong kèm < WebPart> yếu tố.

example

Các vấn đề liên quan