2009-06-26 15 views
6

Ho il requisito di specificare le connessioni web part in onet.xml. Pertanto, quando il sito viene creato utilizzando questa definizione del sito, le suddette web part sono già connesse e pronte per l'uso. Quali proprietà ho bisogno di specificare per quelle particolari web part in onet.xml.Connessioni web part nelle definizioni del sito

risposta

3

Ho anche colpito il muro su questo uno l'anno scorso! Sembra che le connessioni non possano più essere specificate nelle web part nel nuovo formato .webpart come potevano nel vecchio formato .dwp. Ho finito per includere una funzione personalizzata nella definizione del sito, come suggerisce anche kpinhack. Il mio codice per la connessione delle web part è elencato di seguito. Il metodo è progettato per connettere due web part di diverso tipo: non supporta più web part dello stesso tipo sulla stessa pagina. Ma sono sicuro che coglierai l'idea generale.

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

Grazie per aver fornito il codice funzione. Mi ha davvero aiutato –

0

Vorrei configurare le WebParts in SiteProvisioning-Feature, implementando il Gestore eventi "OnActivated". In questo modo il codice verrà eseguito quando il sito Web viene creato e puoi gestire gli errori nel modo che preferisci (ad esempio se le WebParts non sono disponibili quando il sito Web viene creato, per qualsiasi motivo)

Spero che questo aiuti!

+0

È questo l'unico modo per fornire la connessione web part nella definizione del sito? Non posso semplicemente specificare le proprietà di connessione webpart in onet.xml. Penso che nel punto di vista 2003 due parti della web part fossero "connectionid" e "connections". Non posso usare lo stesso? se sì come? –

+0

grazie kpinhack per la soluzione. –

0

si avrebbe bisogno di utilizzare il tag < AllUsersWebPart> per dichiarare le parti web, e quindi dichiarare le connessioni all'interno delle WebPart> elementi racchiusi <.

example

Problemi correlati