我通过以编程方式设置sharepoint计算字段的公式来解决问题,这是我生成的xml:
<Field ID='3bc3a7ac-a5bc-49e0-b430-a987ddac42f7' Type='Calculated' Name='Comparison' StaticName='Comparison' DisplayName='Comparison' ResultType='Text' Required='TRUE' ReadOnly='TRUE'>
<Formula>=IF(AND(CampoA>CampoB,CampoA<CampoC),"OK","Not OK")</Formula>
<FieldRefs>
<FieldRef Name='CampoC'/>
<FieldRef Name='CampoB'/>
<FieldRef Name='CampoA'/>
</FieldRefs>
</Field>
它给了我错误:')'字符,十六进制值0x29,不能包含在名称中。我必须逃避括号吗?
答案 0 :(得分:2)
在Formula
元素中,您需要使用<
转义<
...
<Field ID='3bc3a7ac-a5bc-49e0-b430-a987ddac42f7' Type='Calculated' Name='Comparison' StaticName='Comparison' DisplayName='Comparison' ResultType='Text' Required='TRUE' ReadOnly='TRUE'>
<Formula>=IF(AND(CampoA>CampoB,CampoA<CampoC),"OK","Not OK")</Formula>
<FieldRefs>
<FieldRef Name='CampoC'/>
<FieldRef Name='CampoB'/>
<FieldRef Name='CampoA'/>
</FieldRefs>
</Field>
如果您有文字&
字符,则还需要使用&
来逃避这些字符。
另一个选择是将内容包装在CDATA ...
中<Field ID='3bc3a7ac-a5bc-49e0-b430-a987ddac42f7' Type='Calculated' Name='Comparison' StaticName='Comparison' DisplayName='Comparison' ResultType='Text' Required='TRUE' ReadOnly='TRUE'>
<Formula><![CDATA[=IF(AND(CampoA>CampoB,CampoA<CampoC),"OK","Not OK")]]></Formula>
<FieldRefs>
<FieldRef Name='CampoC'/>
<FieldRef Name='CampoB'/>
<FieldRef Name='CampoA'/>
</FieldRefs>
</Field>
我不确定你的公式中是否需要文字"
。如果没有,请将其更改为CDATA部分中的"
。