以下列定义 DOES 工作。
<Field ID="{F4313C31-C8DD-4917-98A9-0DE886177758}"
Type="DateTime"
Name="ExpirationDate"
DisplayName="Limited until (if necessary)"
StaticName="ExpirationDate"
Group="SomeGroup"
Required="FALSE"
Format="DateOnly"
FriendlyDisplayFormat="Disabled"
CalType="0">
<Validation Message="Please select a date in the future.">=[Limited until (if necessary)]>TODAY()</Validation>
但当然我不想在我的验证公式中使用显示名称。 无论如何,靠近生产任何显示名称都会被移动到resx文件。 使用resx文件时,我最终遇到的错误与我之前尝试使用内部字段名称而不是显示名称时遇到的错误相同。
错误是: 公式无法引用另一列。检查拼写错误的公式或更新公式以仅引用此列。
这是SharePoint在通过UI创建列时所做的事情:
<Field Type="DateTime" DisplayName="RS Expiration Date" Required="FALSE" EnforceUniqueValues="FALSE" Indexed="FALSE" Format="DateOnly" FriendlyDisplayFormat="Disabled" ID="{15380d60-50d7-4ce1-b21b-92695f0c0811}" SourceID="{8086fd7d-ca0b-4258-9352-f166615b6159}" StaticName="RSExpDate" Name="RSExpDate" ColName="datetime2" RowOrdinal="0" CalType="0" Version="1">
<Validation Message="Please enter a future date." Script="function(x){return SP.Exp.Calc.valid(SP.Exp.Node.f('GT',[SP.Exp.Node.a(0),SP.Exp.Node.f('TODAY',[])]),x)}">=RSExpDate>TODAY()</Validation>
<ValidationDisplayNames>=[RS Expiration Date]>TODAY()</ValidationDisplayNames>
显然,那里有很多你不需要的信息。 有趣的部分是验证部分。它使用“ValidationDisplayNames”而不是“Validation”。后者也只适用于显示名称。