2010-06-14 4 views
1

J'ai copié C: \ Program Files \ Fichiers communs \ Microsoft Shared \ Extensions serveur Web \ 14 \ TEMPLATE \ FEATURES \ EventsList \ Events \ schema.xml dans une fonction de modèle de liste personnalisée. J'ai une autre caractéristique qui crée l'instance de liste:Problème ListViewWebPart avec le modèle de liste d'événements personnalisé

<ListInstance 
    FeatureId="58c1f9c9-eadb-41dd-a358-e04b2f2e30c0" 
    TemplateType="100322" 
    Title="$Resources:core,calendarList" 
    Url="$Resources:core,lists_Folder;/$Resources:core,calendar_Folder" 
    OnQuickLaunch="TRUE"> 
</ListInstance> 

et place ensuite un ListViewWebPart sur la page:

<View List="$Resources:core,lists_Folder;/$Resources:core,calendar_Folder" BaseViewID="0" WebPartZoneID="TopRightRow" WebPartOrder="3" /> 

activer les fonctionnalités et aller sur le site. Le webpart dit: Il n'y a actuellement aucun événement à venir. Pour ajouter un nouvel événement, cliquez sur "Ajouter un nouvel événement". Je clique sur Ajouter un nouvel événement, saisissez les informations et cliquez sur Enregistrer. La page s'actualise, le message Aucun événement à venir disparaît, mais aucun élément n'est affiché! Si je vais au calendrier, l'élément de liste est là. Ce qui donne?

Je change la définition d'instance de liste afin qu'il utilise le hors du modèle de boîte:

<ListInstance 
    FeatureId="00bfea71-ec85-4903-972d-ebe475780106" 
    TemplateType="106 
    Title="$Resources:core,calendarList" 
    Url="$Resources:core,lists_Folder;/$Resources:core,calendar_Folder" 
    OnQuickLaunch="TRUE"> 
</ListInstance> 

Quand je reconstruis le site, activer les fonctions, et répétez les étapes « ajouter de nouveaux », l'article est maintenant afficher correctement dans le webpart après l'actualisation de la page.

J'ai annulé toutes mes modifications du modèle de liste personnalisé. Il est maintenant identique au schéma OOTB. Pourquoi mon modèle de liste personnalisée ne fonctionne-t-il pas, mais le modèle de liste OOTB fonctionne-t-il?

Répondre

1

Je sais pourquoi le modèle OOTB fonctionne, mais j'ai été en mesure de réparer mon modèle personnalisé.

Tout d'abord, supprimez la ligne XslLink du BaseViewID = "0" Voir en schema.xml:

<XslLink>main.xsl</XslLink> 

Faites défiler la liste à la section Barre d'outils/de IfHasRights. Cas n ° 4 de changement:

<Case Value="4"><HTML><![CDATA[<div class="tb"><img src="/_layouts/images/caladd.gif" alt="" />&#160;<a class="ms-addnew" id="idHomePageNewEvent" href="]]></HTML> 
    <URL Cmd="New" /><HTML><![CDATA[" onclick="javascript:NewItem(']]></HTML> 
    <ScriptQuote NotAddingQuote="TRUE"> 
    <URL Cmd="New" /> 
    </ScriptQuote><HTML><![CDATA[', true);javascript:return false;" target="_self">]]></HTML><HTML>$Resources:core,AddNewEvent;</HTML><HTML><![CDATA[</a></div>]]></HTML> 
</Case> 

à:

<Case Value="4"><HTML><![CDATA[<div class="tb"><img src="/_layouts/images/caladd.gif" alt="" />&#160;<a class="ms-addnew" id="idHomePageNewEvent" href="]]></HTML> 
    <URL Cmd="New" /><HTML><![CDATA[" onclick="javascript:NewItem2(event, ']]></HTML> 
    <ScriptQuote NotAddingQuote="TRUE"> 
    <URL Cmd="New" /> 
    </ScriptQuote><HTML><![CDATA[');javascript:return false;" target="_self">]]></HTML><HTML>$Resources:core,AddNewEvent;</HTML><HTML><![CDATA[</a></div>]]></HTML> 
</Case> 

Cela permet au nouveau comportement NewForm.aspx de pop-up SharePoint 2010.

Ensuite, changer l'approvisionnement du webpart à:

<View List="$Resources:core,lists_Folder;/$Resources:core,calendar_Folder" BaseViewID="0" WebPartZoneID="TopRightRow" WebPartOrder="3"> 
    <![CDATA[ 
     <WebPart xmlns="http://schemas.microsoft.com/WebPart/v2"> 
      <Assembly>Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly> 
      <TypeName>Microsoft.SharePoint.WebPartPages.ListViewWebPart</TypeName> 
      <Title>Calendar</Title>      
     </WebPart> 
    ]]> 
</View> 

Ce ainsi que la suppression de la ligne XslLink force le webpart pour rendre un ListViewWebPart plutôt que comme un XsltListViewWebPart.

Maintenant, le rendu entre les deux weparts est différent, comme une dernière étape, utilisez le style suivant afin que le lien Ajouter un nouveau de la ListViewWebPart ressemble à l'ajouter nouveau lien de la XsltListViewWebPart:

div.tb { 
border-top:1px solid #EBEBEB; 
margin:3px 0 16px; 
padding:9px 7px 3px 10px; 
} 
Questions connexes