Ist es möglich, ein Nummernfeld in einem Seitenlayout zu formatieren?
-
09-09-2019 - |
Frage
Ich entwickle eine SharePoint Publishing -Site und richte seine Inhaltstypen und Seitenlayouts ein. Ich muss den Wert für ein Jahr mit Typnummer anzeigen. Das Markup ist derzeit:
<SharePointWebControls:NumberField FieldName="Year" runat="server" id="Year" />
Das Problem mit dem Standardverhalten ist, dass es jede Zahl mit einem Komma zeigt, z. B. "2.009" anstelle von "2009". Gibt es eine Möglichkeit, wie ich eine Art String.Format -Syntax auf das Feld festlegen kann, damit es korrekt angezeigt wird?
Ich habe versucht, eine neue Rendering -Vorlage zu erstellen, die so aussieht:
<SharePoint:RenderingTemplate ID="YearNumberField" runat="server">
<Template>
<SharePoint:FormField ID="TextField" runat="server"/>
</Template>
</SharePoint:RenderingTemplate>
... aber es scheint keine 'Format' Eigenschaft auf dem Formfield -Objekt zu geben.
Danke für jede Hilfe.
Aktualisieren:
Ich habe versucht, das SharePoint: Formfield -Tag in SharePoint: formattedString zu wickeln. Leider wurde das Feld nicht formatiert, gleiche Ergebnisse wie diese Frage.
Lösung
Das Problem ist, dass die Rendering -Vorlage das Formfeld verwenden muss. Dies macht immer den Wert im Format: 1.989. Um dies zu beheben, muss der gerenderte Text gefangen und geändert werden, um die gewünschte Ausgabe zu erhalten. Hier sind zwei Ansätze zur Lösung dieser:
1. Schreiben Sie eine benutzerdefinierte Steuerung, die von Numberfield geerbt wurde
Die Methoden Renderfieldfordisplay und RenderfieldForInput können überschrieben werden, um die gewünschte Ausgabe bereitzustellen. Der Kontrolle können zusätzliche Eigenschaften hinzugefügt werden, um zusätzliches Verhalten zu beschreiben.
Vorteile: Keine Änderungen an den Rendering -Vorlagen erforderlich.
2. Schreiben Sie eine benutzerdefinierte Steuerung für die Verwendung in der Rendering -Vorlage
Eine Steuerung, die (z. B.) regelmäßige Ausdrücke verwendet, um Text zu ändern, kann die Formfield -Steuerung einwickeln.
<SharePoint:RenderingTemplate ID="YearField" runat="server">
<Template>
<RX:RegexManipulatorControl runat="server"
Mode="Replace"
Expression=","
Replacement="">
<SharePoint:FormField runat="server"/>
</RX:RegexManipulatorControl>
</Template>
</SharePoint:RenderingTemplate>
Vorteile: Generische Lösung kann für jede Art von Feld verwendet werden.
Andere Tipps
aus Nur ein weiterer SharePoint -Blog
Öffnen Sie die Listenansicht im SharePoint -Designer.
Klicken Sie mit der rechten Maustaste auf den Web -Teil der Datenansicht. (Die Liste)
Wählen Sie in XSLT -Datenansicht konvertieren
Klicken Sie auf das Feld Number, das Sie formatieren möchten
A> wird angezeigt, das das Datenfeld zeigt, Format als
Klicken Sie auf den Link unten -Format unter - Zahlenformatierungsoptionen
Unter Optionen Deaktivieren verwenden Sie 1000 Separator
OK klicken
Speichern Sie Ihre Änderungen und drücken Sie die F12 zur Vorschau