【问题标题】:Is it possible to format a NumberField in a page layout?是否可以在页面布局中格式化 NumberField?
【发布时间】:2011-01-26 22:12:49
【问题描述】:

我正在开发一个 SharePoint 发布网站并设置其内容类型和页面布局。我需要显示 Number 类型的 Year 字段的值。目前的标记是:

<SharePointWebControls:NumberField FieldName="Year" runat="server" id="Year" />

默认行为的问题是它用逗号显示每个数字,例如“2,009”而不是“2009”。有没有办法可以在字段上设置某种 String.Format 语法以使其正确显示?

我尝试创建一个新的渲染模板,如下所示:

<SharePoint:RenderingTemplate ID="YearNumberField" runat="server">
  <Template>
    <SharePoint:FormField ID="TextField" runat="server"/>
  </Template>
</SharePoint:RenderingTemplate>

...但在 FormField 对象上似乎没有任何“格式”属性。

感谢您的帮助。

更新:

我尝试将 SharePoint:FormField 标记包装在 SharePoint:FormattedString 中。不幸的是,该字段未格式化,结果与this question 相同。

【问题讨论】:

    标签: sharepoint formatting moss page-layout


    【解决方案1】:

    问题是渲染模板必须使用FormField。这始终以以下格式呈现值:1,989 。为了解决这个问题,需要捕获和更改渲染的文本以获得所需的输出。以下是解决此问题的两种方法:

    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>
    

    优点:通用解决方案可用于任何类型的字段。

    【讨论】:

      【解决方案2】:

      来自只是另一个 SharePoint 博客

      在 SharePoint 中打开列表视图 设计师。

      右键单击数据视图 Web 部件。 (名单)

      选择转换为 XSLT 数据视图

      点击你想要的数字字段 喜欢格式化

      A > 将出现显示数据字段, 格式为

      点击格式为下方的链接 - 数字格式选项

      在选项下取消选择使用 1000 分隔符

      点击确定

      保存您的更改并按 F12 到 预览

      【讨论】:

      • 感谢史蒂夫,但这是在页面布局中,不涉及 Web 部件。
      猜你喜欢
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      • 2015-12-22
      • 2021-06-15
      • 2021-02-10
      • 1970-01-01
      • 2011-02-09
      相关资源
      最近更新 更多