2009-08-24 7 views
1

Je rencontre des problèmes avec un modèle de contrôle personnalisé.Modèle de contrôle personnalisé SharePoint non appliqué

Mon intention est d'utiliser un modèle de contrôle personnalisé sur un NewForm.aspx pour une liste.

  1. J'ai créé un fichier CustomTemplate.ascx et cela est déployé à 12/Template/CONTROLTEMPLATES

    <SharePoint:RenderingTemplate ID="CustomListForm" runat="server" >...

  2. J'ai modifié le fichier schema.xml pour la liste à utiliser mon modèle personnalisé:

    <Form Type="NewForm" Url="NewForm.aspx" WebPartZoneID="Main" Template="CustomListForm" />

Ma page NewForm.aspx affiche toujours la vue par défaut. C'est pour les listes nouvelles et existantes basées sur mon modèle de liste. J'ai essayé de redémarrer IIS autour du déploiement mais cela n'aide pas.

Si je change le nom de mon modèle en "ListForm", cela remplace avec succès le modèle par défaut comme prévu, et je peux voir le changement dans les listes existantes et nouvelles.

J'ai cherché de l'aide sur ce site et Google, mais je ne trouve rien. Est-ce que quelqu'un à déjà rencontré cela avant?

Répondre

2

Assurez-vous que TemplateName dans votre type de contenu est une chaîne vide ou vide. TemplateName défini dans ContentType remplacera tout TemplateName défini dans le schéma de la liste. FYI, le type de contenu prêt à l'emploi 'Item' a NewFormTemplateName défini sur 'ListForm', cela remplacera tout nom de modèle personnalisé défini dans votre schéma de liste.

0

Je suppose que vous avez une erreur quelque part dans le CustomTemplate.ascx -
pouvez-vous poster le code de la CustomTempate.ascx?

0

Toutes les étapes que vous avez effectuées sont correctes. J'ai fait des choses semblables dans le passé et j'ai réussi à le faire fonctionner. Peu de choses que je suggère est d'essayer d'écrire le code suivant voir quel est le modèle que vous obtenez.

 SPList oList=SPContext.Current.Web.Lists["YourList"]; 
     Console.WriteLine(oList.Forms[PAGETYPE.PAGE_NEWFORM].TemplateName); 

Si le code ci-dessus renvoie le bon nom de modèle alors il n'y a pas de problème avec le déploiement/association.Something mal avec le modèle lui-même. Vous pouvez creuser dans le journal SharePoint. Vous devriez obtenir plus d'informations.

+0

Ok, vérifié le journal après avoir essayé d'afficher le NewForm.page ASPX et ce qui suit est écrit: élevé \t AVERTISSEMENT: Impossible de modifier FormContext.FormMode à [Invalid] car il est déjà défini sur [Nouveau] Des idées? – Jonny

0

Hmmm point intéressant. Souhaitez-vous attendre une erreur de syntaxe pour que SharePoint se rabat sur la valeur par défaut plutôt que de lancer une erreur?

Voici le code des fichiers CustomTemplate.ascx:

<%@ Control Language="C#" AutoEventWireup="false" %> 
<%@Assembly Name="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 
<%@Register TagPrefix="SharePoint" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" namespace="Microsoft.SharePoint.WebControls"%> 
<%@Register TagPrefix="SPHttpUtility" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" namespace="Microsoft.SharePoint.Utilities"%> 
<%@ Register TagPrefix="wssuc" TagName="ToolBar" src="~/_controltemplates/ToolBar.ascx" %> 
<%@ Register TagPrefix="wssuc" TagName="ToolBarButton" src="~/_controltemplates/ToolBarButton.ascx" %> 
<SharePoint:RenderingTemplate ID="CustomListForm" runat="server"> 
    <Template> 
      Test content 
    </Template> 
</SharePoint:RenderingTemplate> 

Notez que je copiais les directives du fichier DefaultTemplates.ascx. Mon fichier se trouve dans le même répertoire.

Merci beaucoup pour votre aide!

Questions connexes