Sharepoint - Пользовательский столбец целых чисел - Удалить разделитель тысяч в EditForm - PullRequest
1 голос
/ 17 декабря 2010

Я создал новое определение столбца в Sharepoint 2010 типа integer и с запятыми, установленными в false. Тип содержимого использует этот столбец. Когда я создаю список на основе типа содержимого, форма «Просмотреть элемент» будет правильно отображать поле: 2010. Однако EditForm отобразит его как 2,010: с запятой, хотя запятые установлены в ложь.

Это новое целочисленное поле (не числовое поле, преобразованное в целое число)

Есть идеи, как отобразить 2,010 как 2010 в EditForm?

 <Field
  ID="{FF3B3FA8-AF33-4691-AD7E-1463DC024B99}"
  Name="studyYear"
  StaticName="studyYear"
  DisplayName="Study year"
  Title="Year"
  Description="Study year"
  Required="FALSE"
  Group="Custom Columns"
  Type="Integer"
  Commas="FALSE"
  Min="1900"
  Max="2300"
  MaxLength="4">
 </Field>

Ответы [ 2 ]

1 голос
/ 28 декабря 2010

Я хотел сгруппировать элементы списка по году на основе поля «Создано», но мне нужно было преобразовать число в текст, чтобы избежать разделителя 1000 (,)

Поэтому я создал вычисляемое поле с формулой = LEFT (YEAR (Создано), 1) & ПРАВЫЙ (Год (Создано), 3)

0 голосов
/ 27 января 2011

У меня есть определение настраиваемого поля, которое я создал в SharePoint 2010.

Я в основном следовал шаблону, изложенному в этом пошаговом руководстве по MS. - затем я изменил их пользовательский пример 'Field', который наследуется от 'SPFieldText', вместо этого наследуется от SPFieldNumber, а мой FieldControl наследуется от NumberField.

Кроме того, вот мое определение поля XML:

<?xml version="1.0" encoding="utf-8" ?>
<FieldTypes>
  <FieldType>
    <Field Name="TypeName">Wps</Field>
    <Field Name="SQLType">int</Field>
    <Field Name="InternalType">Integer</Field>
    <Field Name="ParentType">Number</Field>
    <Field Name="TypeDisplayName">Client WPS integer</Field>
    <Field Name="TypeShortDescription">Client WPS number</Field>
    <Field Name="UserCreatable">TRUE</Field>
    <Field Name="ShowOnListCreate">TRUE</Field>
    <Field Name="ShowOnSurveyCreate">TRUE</Field>
    <Field Name="ShowOnDocumentLibraryCreate">TRUE</Field>
    <Field Name="ShowOnColumnTemplateCreate">TRUE</Field>
    <Field Name="FieldTypeClass">MyCompany.SharePoint.WpsField, $SharePoint.Project.AssemblyFullName$</Field>
  </FieldType>
</FieldTypes>

Как и Карел, я все достаточно хорошо определил, чтобы все запятые были сжаты ... за исключением формы редактирования.

Я закончил тем, что добавил некоторый JavaScript в пользовательский .ascx, который является частью моего определения пользовательского поля.

 <%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
    <%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    <%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    <%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    <%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
    <%@ Import Namespace="Microsoft.SharePoint" %> 
    <%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    <%@ Control Language="VB" %>
    <SharePoint:RenderingTemplate ID="WpsFieldControl" runat="server">
      <Template>
        <span id="commaField">
<asp:TextBox ID="TextField" runat="server"  Width="120px" />
        </span>
        <script type="text/javascript">// <![CDATA[
            var numFld = document.getElementById("commaField").childNodes[0];
            numFld.value = numFld.value.replace(",", "");
          // ]]>
        </script>
      </Template>
    </SharePoint:RenderingTemplate>

Обратите внимание, что я завернул свой ASP.NET TextBox в простой SPAN с идентификатором, который я мог легко найти поле, используя getElementById в моем JS. В моем сценарии это было приемлемо, потому что природа нашего бизнеса требовала только одного экземпляра моего типа поля в данной записи списка SharePoint.

Это, казалось, решило все для меня! Может быть, не самый красивый, но мне нравится, что мне не нужно забивать определения моего списка вычисляемыми столбцами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...