Форматирование полей BDC - PullRequest
2 голосов
/ 26 ноября 2009

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

Это не представляется возможным в определении 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>

Приветствия

Ник

Ответы [ 2 ]

4 голосов
/ 04 декабря 2009

XML - это мета-язык, не предназначенный для форматирования или представления информации, он описывает и хранит другие словари. Учитывая это, ответ таков: нет, вы не можете достичь того, что просили, используя только XML.

Рекомендуется использовать элемент XSLT в представлении списка BDC или представлении элемента BDC, которое вы используете. Если вы используете данные другими способами, вы можете легко отформатировать вывод во время рендеринга.

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

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

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

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

XSLT для веб-части можно найти в меню «Изменить общую веб-часть» или, как вы сказали, с помощью SharePoint Designer.

2 голосов
/ 06 декабря 2009

Кажется возможным определить 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 ответ

...