Можно ли отформатировать NumberField в макете страницы? - PullRequest
1 голос
/ 17 апреля 2009

Я занимаюсь разработкой сайта публикации SharePoint и настраиваю его типы контента и макеты страниц. Мне нужно отобразить значение для поля Год с типом Номер. В настоящее время разметка:

<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 отсутствует свойство 'Format'.

Спасибо за любую помощь.

Обновление:

Я попытался обернуть тег SharePoint: FormField внутри SharePoint: FormattedString. К сожалению, поле не было отформатировано, такие же результаты, как у этот вопрос .

Ответы [ 2 ]

0 голосов
/ 12 мая 2009

Проблема в том, что шаблон рендеринга должен использовать FormField. Это всегда отображает значение в формате: 1,989 & nbsp; . Чтобы решить эту проблему, обработанный текст необходимо перехватить и изменить, чтобы получить желаемый результат. Вот два подхода к решению этой проблемы:

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>

Плюсы: универсальное решение может использоваться для любого типа поля.

0 голосов
/ 21 апреля 2009

из Просто еще один блог SharePoint

Открыть представление списка в SharePoint Дизайнер.

Щелкните правой кнопкой мыши веб-часть просмотра данных. (список)

Выберите Преобразовать в представление данных XSLT

Нажмите на числовое поле, которое вы бы нравится форматировать

A> появится, показывая поле данных, Формат как

Нажмите на ссылку ниже Формат как - Параметры форматирования чисел

В опциях снимите флажок Использовать 1000 Сепаратор

Нажмите ОК

Сохраните изменения и нажмите F12, чтобы Предварительный просмотр

...