2009-11-26 3 views
2

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

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

Приветствия

Ник

ответ

4

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

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

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

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

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

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

Вы можете найдите XSLT для веб-части в меню Modify Shared WebPart или, как вы сказали, с помощью SharePoint Designer.

2

Seems possible для определения 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 answer

Смежные вопросы