Вопрос

Я пытаюсь отформатировать поле в определении BDC (каталога бизнес-данных) в SharePoint с разделителем тысяч.

Кажется, что это невозможно в определении XML BDC и возможно только через SharePoint Designer(!).В настоящее время у меня есть поля System.Decimal, поэтому они отображаются как 12345,98, но я хочу, чтобы они отображались как 12345,98.

Знаете ли вы, можно ли этого добиться с помощью определения XML BDC?

    <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. <xsl:десятичный формат /> элемент в представлении списка BDC или веб-части представления элементов BDC, которую вы используете.Если вы используете данные другими способами, вы можете легко отформатировать выходные данные во время рендеринга.

Допустим, у вас есть эта часть кода, отображающая ваш десятичный тип:

<xsl:value-of select="$ColName_0" />

Вам нужно инкапсулировать его чем-то вроде (на основе примера в ссылке):

<xsl:value-of select="format-number($ColName_0, '#.###,00', 'euro')"/>

Вы можете найти 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".Может быть, лучше придерживаться Ответ Ф.Акино

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top