ページレイアウトで番号フィールドをフォーマットすることは可能ですか?
-
09-09-2019 - |
質問
SharePointパブリッシングサイトを開発し、コンテンツタイプとページレイアウトを設定しています。タイプ番号の1年間のフィールドの値を表示する必要があります。現在、マークアップは次のとおりです。
<SharePointWebControls:NumberField FieldName="Year" runat="server" id="Year" />
デフォルトの動作の問題は、「2009」ではなく「2,009」などのコンマで各数値を表示することです。フィールドにある種の文字列を設定して、正しく表示する方法はありますか?
このような新しいレンダリングテンプレートを作成しようとしました。
<SharePoint:RenderingTemplate ID="YearNumberField" runat="server">
<Template>
<SharePoint:FormField ID="TextField" runat="server"/>
</Template>
</SharePoint:RenderingTemplate>
...しかし、Formfieldオブジェクトに「フォーマット」プロパティはないようです。
助けてくれてありがとう。
アップデート:
SharePoint:Formfieldタグ内のSharePoint:FormattedStringをラッピングしてみました。残念ながら、フィールドはフォーマットされておらず、同じ結果と同じ この質問.
解決
問題は、レンダリングテンプレートがFormfieldを使用する必要があることです。これにより、常に値が形式で表示されます。 1,989. 。これを解決するには、レンダリングされたテキストを閉じ込めて変更して、目的の出力を取得する必要があります。これを解決するための2つのアプローチを次に示します。
1. Numberfieldから継承されたカスタムコントロールを書きます
renderfieldfordisplayおよびrenderfieldforinputメソッドは、目的の出力を提供するためにオーバーライドできます。追加のプロパティを制御に追加して、追加の動作を説明できます。
長所:レンダリングテンプレートの変更は必要ありません。
2.レンダリングテンプレートで使用するカスタムコントロールを書き込む
(たとえば)正規表現を使用してテキストを変更するコントロールは、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>
長所:ジェネリックソリューションは、あらゆるタイプのフィールドに使用できます。
他のヒント
から ちょうど別のSharePointブログ
SharePointデザイナーのリストビューを開きます。
Data View Webパーツを右クリックします。 (リスト)
XSLTデータビューへの変換を選択します
フォーマットする番号フィールドをクリックします
a>はデータフィールド、形式を表示して表示されます
以下の形式をクリックしてください - 数字のフォーマットオプション
オプションの下では、1000セパレーターを使用します
OK]をクリックします
変更を保存し、F12を押してプレビューします