Est-il possible de formater un champ numérique dans une mise en page?
-
09-09-2019 - |
Question
Je développe un site de publication SharePoint et je prépare ses types de contenu et ses mises en page. J'ai besoin d'afficher la valeur pour un an avec le numéro de type. Le balisage est actuellement:
<SharePointWebControls:NumberField FieldName="Year" runat="server" id="Year" />
Le problème avec le comportement par défaut est qu'il montre chaque numéro avec une virgule, par exemple "2 009" au lieu de "2009". Existe-t-il un moyen de définir une sorte de syntaxe de chaîne.
J'ai essayé de créer un nouveau modèle de rendu qui ressemble à ceci:
<SharePoint:RenderingTemplate ID="YearNumberField" runat="server">
<Template>
<SharePoint:FormField ID="TextField" runat="server"/>
</Template>
</SharePoint:RenderingTemplate>
... mais il ne semble pas y avoir de propriété «format» sur l'objet FormField.
Merci pour toute aide.
Mise à jour:
J'ai essayé d'envelopper la balise SharePoint: FormField dans SharePoint: FormattedString. Malheureusement, le champ n'a pas été formaté, les mêmes résultats que cette question.
La solution
Le problème est que le modèle de rendu doit utiliser FormField. Cela rend toujours la valeur dans le format: 1 989. Pour résoudre cela, le texte rendu doit être piégé et modifié pour obtenir la sortie souhaitée. Voici deux approches pour résoudre ceci:
1. Écrivez un contrôle personnalisé hérité de Numberfield
Les méthodes Renderfieldfordisplay et RenderFieldForInput peuvent être remplacées pour fournir la sortie souhaitée. Des propriétés supplémentaires peuvent être ajoutées au contrôle pour décrire un comportement supplémentaire.
Avantages: Aucune modification des modèles de rendu requise.
2. Écrivez un contrôle personnalisé à utiliser dans le modèle de rendu
Un contrôle qui (par exemple) utilise des expressions régulières pour modifier le texte peut s'enrouler autour du contrôle FormField.
<SharePoint:RenderingTemplate ID="YearField" runat="server">
<Template>
<RX:RegexManipulatorControl runat="server"
Mode="Replace"
Expression=","
Replacement="">
<SharePoint:FormField runat="server"/>
</RX:RegexManipulatorControl>
</Template>
</SharePoint:RenderingTemplate>
Avantages: Une solution générique peut être utilisée pour tout type de champ.
Autres conseils
de Juste un autre blog SharePoint
Ouvrez la vue de la liste dans SharePoint Designer.
Cliquez avec le bouton droit sur les données Affichage du Web Part. (la liste)
Sélectionnez Convertir en vue de données XSLT
Cliquez sur le champ numérique que vous souhaitez formater
A> apparaîtra afficher le champ de données, format comme
Cliquez sur le format ci-dessous le format comme - Options de formatage numérique
Sous les options désélectionnez Utiliser 1000 séparateur
Cliquez sur OK
Enregistrez vos modifications et appuyez sur F12 pour prévisualiser