Question

J'ai créé une liste personnalisée dans un site SharePoint et a généré un projet Visual Studio 2008 à l'aide de solutions SharePoint Generator. Je peux emballer cela comme une fonctionnalité et l'installer. Il fonctionne très bien sur mon serveur.

Après avoir testé ce, j'ai pu ajouter un masterpage personnalisé à la fonction qui est déployée au _catalogs / dossier masterpage. Ici, il est:

<Elements Id="2196306F-3F37-40b5-99CF-42E89B93888A" xmlns="http://schemas.microsoft.com/sharepoint/">
    <Module Name="DefaultMasterPage" Url="_catalogs/masterpage" RootWebOnly="FALSE">
      <File Url="gcbranding.master" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE" />
    </Module>
</Elements>

Maintenant que j'ai un masterpage personnalisé dans mon site, je voudrais avoir cette utilisé pour la création de nouveaux éléments. Mais je ne veux pas avoir à mettre le maître de SharePoint Designer.

Pour en revenir à la solution générée, il a NewForm.aspx etc. avec le schéma de liste. Comment puis-je ...

  1. Personnaliser le formulaire qui apparaît pour les nouveaux éléments, et faites-le rediriger vers une page thankyou.aspx plutôt que de montrer tous les éléments de la liste?
  2. Définissez l'URL à la page principale correctement?

Je suis perdu sur le nombre de points 1. Ai-je besoin de créer un webpart personnalisé et embed que NewForm.aspx?

Sur le point 2 je me suis fait quelques progrès, mais se sont heurtées à un problème. Si je mets le maître comme ça dans mon NewForm.aspx ...

 MasterPageFile="~/masterurl/gcmaster.master"

Il installera OK, mais quand je frappe le site que je reçois une erreur, car ~ n'est pas autorisé dans l'URL. Si j'utilise _catalogs / masterpage dans la directive, il ne trouve pas le maître parce que l'URL est relative. Seul ce code semble fonctionner:

MasterPageFile="../../_catalogs/masterpage/gcmaster.master"

Quelle est la meilleure façon de la pratique de la mise en page du fichier maître dans SharePoint, lors du déploiement d'une fonction personnalisée / solution?

Était-ce utile?

La solution

Re Masterpage: Je pense que vous voulez '~masterurl/gcmaster.master'. pas "/" entre le "~" et "maître".

Re NewForm: Vous pouvez créer votre propre code-behind pour NewForm.aspx, changer l'attribut Inherits à votre propre classe. Je pense que je commencerais par avoir mon code personnalisé héritera derrière SharePoint.SharePoint.WebPartPages.WebPartPage , et partir de là.

Autres conseils

Personnaliser le formulaire qui apparaît pour les nouveaux éléments, et l'ont rediriger vers une page thankyou.aspx plutôt que de montrer tous les éléments de la liste?

La réponse la plus simple, est, changer le « Ajouter un nouvel élément » pour ajouter une URL source pour votre page de remerciement. Par exemple, au lieu de (je devais quitter le http):

www.yoursite.com/Lists/Links/NewForm.aspx

vous modifiez à:

www.yoursite.com/Lists/Links/NewForm.aspx?Source=www.yoursite.com/ThankYou.aspx 

Lorsque l'utilisateur clique Envoyer à partir de la page NewForm, ils seront redirigés vers ThankYou.aspx.

Vous devrez probablement utiliser SharePoint Designer pour changer le lien, cependant.

La meilleure façon de le faire est d'ouvrir NewForm.aspx dans SharePoint Designer, le changement:

MasterPageFile = "~ masterurl / default.master"

à

MasterPageFile = "~ masterurl / custom.master"

Ce sera évidemment modifier l'instance en cours, mais si vous souhaitez déployer cela avec une définition du site ou la fonction, vous devez créer et page NewForm.aspx dans le même dossier que schema.xml dans votre dossier d'instance de liste.

L'espoir qui aide.

Remplacer l'événement onPreInit sur la page Web, et y mettre cette ligne dans:

this.MasterPageFile = SPContext.Current.Web.CustomMasterUrl;

(si vous utilisez la page maître personnalisée)

Si vous utilisez la page maître par défaut, utilisez la ligne suivante:

this.MasterPageFile =  SPContext.Current.Web.MasterUrl;

HTH,

James

Si vous souhaitez réutiliser une page principale à travers une variété de pages .aspx, alors vous êtes mieux définir comme le maître de page personnalisé. Il n'y a pas dans la page WSS qui vous permet de faire facilement, donc vous êtes mieux soit un clic droit sur votre _catalogs / masterpage / fichier gcmaster.master dans SharePoint Designer et en choisissant Définir comme maître personnalisé page, ou la mise sur le serveur via PowerShell (script SharePoint en-tête ici: http: // sharepoint .microsoft.com / blogs / zach / Listes / messages / Post.aspx? ID = 7 )

$web = Get-SPWeb("http://mysiteurl")
$web.CustomMasterUrl = "_catalogs/masterpage/gcmaster.master"
$web.Update()

Ensuite, dans la directive @Page de votre page .aspx, vous pouvez définir:

MasterPageFile="~/masterurl/custom.master"

Gardez à l'esprit que ce qui rend toutes les pages de votre site .aspx qui font référence à "~ / masterurl / custom.master" utiliser votre page gcmaster.master.

Vous pouvez ignorer tout cela et pour votre page .aspx inclure simplement une directive @Page qui ressemble à ceci:

MasterPageFile="~/site/_catalogs/masterpage/gcmaster.master"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top