我在Sharepoint 2010中创建了一个类型为integer的新列定义,并将Commas设置为false。 内容类型使用此列。 当我根据内容类型创建列表时,“查看项目”表单将正确显示该字段:2010。 然而,EditForm会将其显示为2,010:使用逗号,但逗号设置为false。
这是一个新的整数字段(不是转换为整数的数字字段)
如何在EditForm中将2,010显示为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>
答案 0 :(得分:1)
我想根据“创建”字段按年份对列表项进行分组,但需要将数字转换为文本以避免1000个分隔符(,)
所以我创建了一个计算字段,其公式为= LEFT(YEAR(Created),1)&amp; RIGHT(YEAR(Created),3)
答案 1 :(得分:0)
我有一个我在SharePoint 2010中创建的自定义字段定义。
我基本上遵循了in this MS walkthrough.所提出的模式 - 然后我将自定义的“字段”示例更改为继承自SPFieldNumber的“SPFieldText”,而我的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>
就像Karel一样,我已经很好地定义了一切,所有逗号都被压扁了......除了编辑表格。
我最后在自定义.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 TextBox包装在一个带有ID的简单SPAN中,我可以使用JS中的getElementById轻松找到该字段。这在我的场景中是可以接受的,因为我们的业务性质在给定的SharePoint列表记录中只需要我的字段类型的单个实例。
这似乎解决了我的一切!也许不是最漂亮的,但是,我喜欢我不必用计算列阻塞我的列表定义。