Vor ein paar Tagen sind wir auf einen Bug im Data View Webpart (bzw. auf deutsch: Datenansichtswebpart) gestossen, als wir den Inhalt einer SharePoint-Liste in einem anderen Web mithilfe des SharePoint-Designers anzeigen wollten. Ausgangsbasis war eine deutschsprachige SharePoint-Installation.
In der ursprünglichen Liste gab es u.a. eine Spalte mit dem Namen 'Preis', die als Währung in € definiert war. Der Inhalt dieser Liste sollte mit dem Data View-Webpart auf einer Seite in einem anderen Web angezeigt werden. Dies klappte auch anfangs problemlos, nur als in der ursprünglichen Liste Preise mit Nachkommastellen (also z.B. 49,95€) auftauchten, wurde dieser Preis im Data View-Webpart nicht mehr angezeigt. An der Stelle, an der wir eigentlich 49,95€ erwartet haben, wurde nichts mehr angezeigt. Bei Preisen ohne Nachkommastellen klappt die Anzeige hingegen wie erwartet.
Nach einigem Recherchieren und Ausprobieren sind wir zu der Erkenntnis gekommen, dass das Data View-Webpart offensichtlich ein Problem mit Punkt und Komma und länderspezifischen Einstellungen hat. Zwar wird im entsprechenden XSLT-String die deutsche LCID mit angegeben, aber trotzdem klappt die korrekte Formatierung von Währungsspalten nicht.
Im Original sieht dieser XSLT-String folgendermaßen aus:
<xsl:value-of select="format-number(@Preis, '€#.##0,00;-€#.##0,00', 'lcid1031')" />
Eigentlich ist diese Formatierung richtig, denn in Deutschland werden die Nachkommastellen mit einem Komma abgetrennt. Das Problem kommt daher, dass wir auch einen deutschen SQLServer installiert haben - SharePoint aber wohl insgeheim von einem englischen SQLServer und damit von einem englischen Zahlenformat ausgeht.
Zum Glück kann man über den XSLT-Editor des Data View-Webparts diesen String ein wenig verändern - und über diesen Weg läßt sich der beschriebene Fehler im Data View-Webpart dann auch korrigieren.
Wir haben den XSLT-String ein wenig modifiziert:
<xsl:value-of select="format-number(translate(@Preis,',','.'), '#.##0,00 €;-#.##0,00 €', 'lcid1031')" />
Mit diesem String ersetzen wir vor der eigentlichen Formatierung ein Komma durch einen Punkt - und haben damit eine englischsprachige Zahlenformatierung erreicht. Dieses englischsprachige Zahlenformat kann das Data View-Webpart jetzt problemlos als deutsche Währung formatieren und ausgeben.
Weitere Informationen zu diesem Thema finden sich in diesem MSDN-Artikel zu KB293469.