Sharepoint 2010 Sharepoint-自定义整数列-删除EditForm中的千分隔符

Sharepoint 2010 Sharepoint-自定义整数列-删除EditForm中的千分隔符,sharepoint-2010,integer,Sharepoint 2010,Integer,我在Sharepoint 2010中创建了一个新的列定义,类型为integer,逗号设置为false。 内容类型使用此列。 当我基于内容类型创建列表时,“查看项目”表单将正确显示字段:2010。 然而,EditForm将显示为2010:带有逗号,尽管逗号设置为false 这是一个新的整数字段(不是转换为整数的数字字段) 你知道如何在编辑表单中将2010年显示为2010年吗 <Field ID="{FF3B3FA8-AF33-4691-AD7E-1463DC024B99}" Nam

我在Sharepoint 2010中创建了一个新的列定义,类型为integer,逗号设置为false。 内容类型使用此列。 当我基于内容类型创建列表时,“查看项目”表单将正确显示字段:2010。 然而,EditForm将显示为2010:带有逗号,尽管逗号设置为false

这是一个新的整数字段(不是转换为整数的数字字段)

你知道如何在编辑表单中将2010年显示为2010年吗

 <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>

我想根据创建的字段按年份对列表项进行分组,但需要将数字转换为文本,以避免使用1000分隔符(,)


因此,我创建了一个计算字段,公式为=LEFT(YEAR(created),1)和RIGHT(YEAR(created),3)

我想根据创建的字段按年份对列表项进行分组,但需要将数字转换为文本,以避免使用1000个分隔符(,)


因此,我创建了一个计算字段,公式为=左(年(已创建),1)&右(年(已创建),3)

我在SharePoint 2010中创建了一个自定义字段定义

我基本上遵循了所阐述的模式——然后我将他们的自定义“字段”示例(从“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>

Wps
int
整数
数
客户端WPS整数
客户WPS编号
真的
真的
真的
真的
真的
MyCompany.SharePoint.WpsField$SharePoint.Project.AssemblyFullName$
像Karel一样,我对每件事都定义得很好,所有逗号都被压扁了。。除了在编辑表单中

最后,我向自定义字段定义中的custom.ascx添加了一些javascript

 <%@ 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文本框包装在一个简单的范围内,其中包含一个ID,我可以在JS中使用getElementById轻松找到该字段。这在我的场景中是可以接受的,因为我们业务的性质只需要给定SharePoint列表记录上的单个字段类型实例


这似乎为我解决了一切!也许不是最漂亮的,但我喜欢这样,我不必用计算列阻塞列表定义。

我有一个在SharePoint 2010中创建的自定义字段定义

我基本上遵循了所阐述的模式——然后我将他们的自定义“字段”示例(从“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>

Wps
int
整数
数
客户端WPS整数
客户WPS编号
真的
真的
真的
真的
真的
MyCompany.SharePoint.WpsField$SharePoint.Project.AssemblyFullName$
像Karel一样,我对每件事都定义得很好,所有逗号都被压扁了。。除了在编辑表单中

最后,我向自定义字段定义中的custom.ascx添加了一些javascript

 <%@ 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文本框包装在一个简单的范围内,其中包含一个ID,我可以在JS中使用getElementById轻松找到该字段。这在我的场景中是可以接受的,因为我们业务的性质只需要给定SharePoint列表记录上的单个字段类型实例


这似乎为我解决了一切!也许不是最漂亮的,但是,我喜欢这样,我不必用计算列阻塞列表定义。

谢谢阿尔奇。问题是,问题发生在编辑表单中,因此我无法使用计算字段。谢谢Archie。问题是,该问题发生在编辑表单中,因此我无法使用计算字段。此后我发现,逗号仍将显示在某些特定位置(例如,当我单击列标题中的V形以按我的自定义SPFieldNumber进行筛选时:筛选选项仍以逗号为特征)不使用自定义列定义(如我上面的帖子)如果您需要您的列表与未知的客户端软件进行交互。不幸的是,我们这里有一些复印机,可以从“扫描”的文档创建PDF并将其填充到SharePoint库中-除非该库具有带有自定义字段定义的列。呸!我发现逗号仍然会出现在特定的位置位置(例如,当我单击列标题中的V形以按我的自定义SPFieldNumber进行筛选时:筛选选项仍使用逗号)不使用自定义列定义(如我在上面的帖子中所述)如果您需要您的列表与未知的客户端软件进行交互。不幸的是,我们这里有一些复印机,可以从“扫描”文档创建PDF并将其填充到SharePoint库中,除非该库具有带有自定义字段定义的列。POO!