2009-03-26 10 views

Répondre

2

Vous pouvez utiliser un récepteur de fonctions et gérer l'ajout de composants WebPart lors de l'activation des fonctions. Voici un bout de talon pour vous aider à démarrer.

En fonction du code d'appel de méthode activée similaire à ce qui suit:

 // Add web parts to the .aspx page that was provisioned 
     SPFile page = site.GetFile(<<page url>>); 

     Hashtable hashWebPartsOnPage = new Hashtable(); 

     using (SPLimitedWebPartManager mgr = page.GetLimitedWebPartManager(PersonalizationScope.Shared)) 
     { 
      try 
      { 
       // First, let's clear the existing web parts off of the form 
       foreach (System.Web.UI.WebControls.WebParts.WebPart webPart in mgr.WebParts) 
       { 
        hashWebPartsOnPage.Add(webPart.ID, webPart); 
       } 

       foreach (string webPartName in hashWebPartsOnPage.Keys) 
       { 
        System.Web.UI.WebControls.WebParts.WebPart webPart = hashWebPartsOnPage[webPartName] as System.Web.UI.WebControls.WebParts.WebPart; 
        mgr.DeleteWebPart(webPart); 
       } 

       // Add Part to the proper Zone 
       MyWebPart myWebPart = new MyWebPart(); 
       //set web part properties 
       mgr.AddWebPart(myWebPart, "FullPage", 1); 
      } 
      finally 
      { 
       mgr.Web.Dispose(); 
      } 

     } 
     page.Update(); 
1

Eh bien, je voudrais accéder à la vue définition de liste la page que je ne pense pas que sera accessible en utilisant ce qui précède site.GetFile () méthode. Toutes les autres options que vous pensez pouvoir utiliser pour y parvenir. J'ai essayé les étapes suivantes:

  1. Copiez le OOB « ViewPage.aspx » et le placer dans le même dossier que « CustomViewPage.aspx »

  2. Créer la partie Web personnalisée qui affiche les éléments de la vue avec votre approche personnalisée.

  3. Créez une fonction pour provisionner "CustomViewpage.aspx" avec votre composant WebPart personnalisé.

  4. Créez une définition de liste personnalisée. Dans le fichier schema.xml de la définition de toutes les vues, mentionnez le "SetupPath" pour référencer votre "CustomViewPage.aspx". Avec cette étape toutes les vues mentionnées dans la définition de liste utiliseront "CustomViewPage.aspx" pour créer les pages d'affichage et toutes les vues que vous créez après la création de la liste utiliseront "customViewPage.aspx" comme base page pour créer les pages d'affichage.

Étape 1:

copie le OOB « ViewPage.aspx » et le placer dans le répertoire C: \ Program Files \ Common Files \ Microsoft Shared \ extensions serveur web \ 12 \ TEMPLATE \ dossier Pages comme « CustomViewPage.aspx »

Étape 2:

Créer la partie Web personnalisée qui affiche les éléments de la vue avec votre approche personnalisée. Fondamentalement, utilisez la méthode GetViewfromUrl ("Listes //") pour obtenir la vue, puis récupérer les éléments dans le composant WebPart. L'extrait de code pour le composant WebPart personnalisé se présente comme suit:

SPList list = SPContext.Current.List;

Chaîne strViewName =

SPView view = SPContext.Current.Web.GetViewFromUrl ("Listes/liste /" + strViewName);

SPListItemCollection listItems = list.GetItems (voir);

. .

.

. Après avoir obtenu les éléments de la liste, effectuez votre approche personnalisée pour afficher les éléments.

Créez la DLL de partie Web et placez-la dans le GAC.

Étape 3:

Créer une fonction à la disposition « CustomViewPage.aspx » avec votre partie Web personnalisée. En activant cette fonctionnalité, "Customviewpage.aspx" sera intégré à votre composant WebPart personnalisé. Le contenu du fichier manifeste des éléments ressemble suit:

<File Url="Pages/CustomViewPage.aspx" Type="Ghostable"> 

    <AllUsersWebPart WebPartZoneID="Main" WebPartOrder="1"> 

    <![CDATA[ 

       <WebPart xmlns="http://schemas.microsoft.com/WebPart/v2"> 

        <Assembly>CustomWebpartforView, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e3483ddc8b0d437a</Assembly> 

        <TypeName> CustomWebpartforView.MyCustomview</TypeName> 

        <FrameType>None</FrameType> 

              <IsVisible>true</IsVisible> 

        <Title>Custom Web part for View</Title>         

       </WebPart> 

       ]]> 

    </AllUsersWebPart> 

</File> 

Cette étape me donne une erreur pour le chemin du fichier source que je modifié en donnant l'attribut Path dans l'étiquette de fichier

Étape 4:

Maintenant, la page vue personnalisée de base est disponible avec la partie Web. Maintenant, comment intégrer la page de vue personnalisée avec la définition de la liste. Créez une définition de liste personnalisée et pour toutes les vues définies dans le schéma, mentionnez "SetupPath" pour utiliser "CustomViewPage.aspx". La page de vue personnalisée sera désormais utilisée comme page de vue de base pour toutes les vues définies dans la définition de liste. Les vues créées ultérieurement utiliseront également "CustomViewpage.aspx" comme page de base. L'extrait de l'échantillon pour déclarer les vues à l'intérieur du schema.xml est la suivante:

installer et activer la fonction de la définition de votre liste personnalisée. Maintenant, avec toutes ces étapes, lorsque vous créez une liste basée sur cette définition de liste personnalisée, toutes les vues créées utiliseront "CustomViewPage.aspx" pour créer les pages d'affichage et votre composant WebPart personnalisé sera affiché au lieu de le profil de forme de données OOB. Les vues que vous créerez après la création de la liste (via l'interface utilisateur, via le modèle objet) utiliseront également la page "CustomViewpage.aspx" comme page de base pour créer des pages d'affichage.

Pour une raison quelconque, je ne parviens toujours pas à voir le fichier CustomViewPage.aspx avec mon composant WebPart personnalisé. Ai-je manqué quelque chose ou il manque quelque chose dans cet article.

2

sur SharePoint 2010, vous pouvez ajouter un composant WebPart personnalisé ou SharePoint WebPart dans la même vue dans la définition Schema.xml de la liste définition (je ne parle pas de liste par exemple).

Bien que n'est pas directement expliquée par MSDN, et si vous regardez la vue du schéma que vous ne pouvez pas voir un « <WebParts> » définition, vous pouvez réellement faire quelque chose comme ceci:

<View BaseViewID="7" Type="HTML" WebPartZoneID="Main" DisplayName="$Resources:CILSS_defaultView" DefaultView="TRUE" MobileView="FALSE" MobileDefaultView="FALSE" SetupPath="pages\viewpage.aspx" ImageUrl="/_layouts/images/generic.png" Url="CI_Projects.aspx"> 
     <Toolbar Type="Standard" /> 
     <XslLink Default="TRUE">main_cilss.xsl</XslLink> 
     <RowLimit Paged="TRUE">30</RowLimit> 
     <ViewFields> 
      <FieldRef Name="Attachments"></FieldRef> 
      <FieldRef Name="LinkTitle"></FieldRef> 
      <FieldRef Name="CILSS_ProjectDescription"></FieldRef> 
     </ViewFields> 
     <Query> 
      <OrderBy> 
      <FieldRef Name="LinkTitle" Ascending="TRUE"></FieldRef> 
      </OrderBy> 
     </Query> 
     <ParameterBindings> 
      <ParameterBinding Name="NoAnnouncements" Location="Resource(wss,noXinviewofY_LIST)" /> 
      <ParameterBinding Name="NoAnnouncementsHowTo" Location="Resource(wss,noXinviewofY_DEFAULT)" /> 
     </ParameterBindings> 
     <WebParts> 
      <AllUsersWebPart WebPartZoneID="Main" WebPartOrder="2"> 
      <![CDATA[<WebPart xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/WebPart/v2"> 
    <Title>Default Home Webpart</Title> 
    <FrameType>None</FrameType> 
    <Description>Use for formatted text, tables, and images.</Description> 
    <IsIncluded>true</IsIncluded> 
    <ZoneID>Left</ZoneID> 
    <PartOrder>0</PartOrder> 
    <FrameState>Normal</FrameState> 
    <Height /> 
    <Width /> 
    <AllowRemove>true</AllowRemove> 
    <AllowZoneChange>true</AllowZoneChange> 
    <AllowMinimize>true</AllowMinimize> 
    <AllowConnect>true</AllowConnect> 
    <AllowEdit>true</AllowEdit> 
    <AllowHide>true</AllowHide> 
    <IsVisible>true</IsVisible> 
    <DetailLink /> 
    <HelpLink /> 
    <HelpMode>Modeless</HelpMode> 
    <Dir>Default</Dir> 
    <PartImageSmall /> 
    <MissingAssembly>Cannot import this Web Part.</MissingAssembly> 
    <PartImageLarge>/_layouts/images/mscontl.gif</PartImageLarge> 
    <IsIncludedFilter /> 
    <Assembly>Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly> 
    <TypeName>Microsoft.SharePoint.WebPartPages.ContentEditorWebPart</TypeName> 
    <ContentLink xmlns="" /> 
    <Content xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor"> 
    <Value>&lt;div&gt;Create and view Project documents:&lt;/div&gt; 
&lt;br/&gt;</Value></Content> 
    <PartStorage xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor" /> 
</WebPart>]]> 
      </AllUsersWebPart> 
     </WebParts> 
     </View> 

Cette La définition de la vue inclut un composant WebPart Editeur de contenu dans la vue de liste appelée 'CI_Projects.aspx'. N'oubliez pas d'affecter WebPartZoneId et d'affecter un objet BaseViewID différent des vues par défaut incluses dans la définition de la liste.

La partie Web sera configurée sur chaque liste que vous créerez avec cette définition de liste. (évidemment seulement sur le view.aspx nommé que vous définissez).

Questions connexes