質問
私は、SharePointでBDC(ビジネスデータカタログ)定義のフィールドを千単位のセパレータでフォーマットしようとしています。
BDC XML定義では可能ではないようで、SharePoint Designer(!)でのみ可能です。現在取得しているフィールドはSystem.Decimalであるため、12345.98と表示されますが、12,345.98と表示されるようにしたいです。
BDC XML定義によって達成できるかどうか知っていますか?
<Parameter Direction="Return" Name="@ContactTotals">
<TypeDescriptor TypeName="System.Data.IDataReader, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" IsCollection="true" Name="Reader">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Data.IDataRecord, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Name="Record">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Int32" IdentifierName="dim_claims_key" Name="dim_claims_key" />
<TypeDescriptor TypeName="System.Decimal" Name="total_outstanding" DefaultDisplayName="Total Outstanding (USD)" />
<TypeDescriptor TypeName="System.Decimal" Name="total_paid" DefaultDisplayName="Total Paid (USD)" />
<TypeDescriptor TypeName="System.Decimal" Name="total_incurred" DefaultDisplayName="Total Incurred (USD)" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
乾杯
ニック
解決
XMLは、情報をフォーマットまたは表示することを意図していないメタ言語であり、他の語彙を記述および保存します。それを念頭に置いて、答えは次のとおりです。いいえ、XMLのみを使用して、要求したことを達成することはできません。
推奨される方法は、XSLT <!> lt; xsl:decimalを使用することです。使用しているBDCリストビューまたはBDCアイテムビューWebパーツの-format / <!> gt; 要素。他の方法でデータを使用している場合、レンダリング中に出力を簡単にフォーマットできます。
10進数のタイプを表示するコードのこの部分があるとします:
<xsl:value-of select="$ColName_0" />
(リンクのサンプルに基づいて)次のようにカプセル化する必要があります。
<xsl:value-of select="format-number($ColName_0, '#.###,00', 'euro')"/>
[共有Webパーツの変更]メニューでWebパーツのXSLTを見つけることができます。または、前述のとおり、SharePoint Designerを使用します。
他のヒント
Complex Formatting
をTypeDescriptor
要素。このソリューションを適切にテストする環境がないため、次の定義が有効であるようで、特定のシナリオに対応しています。
<Parameter Direction="Return" Name="@ContactTotals">
<TypeDescriptor TypeName="System.Data.IDataReader, ..."
IsCollection="true" Name="Reader">
<!-- note this -->
<Properties>
<Property Name="ComplexFormatting"
Type="System.String" />
</Properties>
<TypeDescriptors>
<TypeDescriptor TypeName="System.Data.IDataRecord, ..." Name="Record">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Int32"
IdentifierName="dim_claims_key"
Name="dim_claims_key" />
<TypeDescriptor TypeName="System.Decimal"
Name="total_outstanding"
DefaultDisplayName="Total Outstanding (USD)" />
<!-- note this -->
<Properties>
<Property Name="FormatString"
Type="System.String">{0:#.###,00}</Property>
</Properties>
</TypeDescriptor>
...
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
MSDNのドキュメントで警告されているように、"ComplexFormatting is slow"
。 F.Aquinoの回答