文档库中列的名称是: 列名=>关键词(子流程,方法,服务模型等) 列类型=>多行文字
我们在caml查询中使用上面的列名,如下所示
query.Query = "<Where><Eq><FieldRef Name='Keywords(Sub-Processes,Methodology,Servicing Model, etc)'/><Value Type='Text'>Merchant Services,Merchant Set Up</Value></Eq></Where>";
但是当我们运行代码时,我们得到了异常:
Microsoft.SharePoint.SPException:一个或多个字段类型不是 安装得当。转到列表设置页面以删除它们 字段。
这是否是异常,因为如果是的话,列名中使用了特殊字符,那么我该如何纠正呢。
我们无法更改列名,因为它是必需的。
答案 0 :(得分:2)
内部名称和显示名称彼此完全不同。在某些情况下它们可以是相同的但不是全部。在两个带有空格的单词之间通常有一个转义序列。
在运行时检索内部名称而不是硬编码通常是一种很好的做法。
以下是如何操作:
var internalName=list.Fields.GetFieldByInternalName(column.ColumnName).Title;
答案 1 :(得分:1)
我可以肯定地告诉你(鉴于特殊字符),这不是该字段的内部名称。它可能是显示名称,但它不是内部名称。
错误是因为没有任何字段具有您提供的内部名称。
就个人而言,当我想找到字段的内部名称时,我会转到列表的列表设置并编辑列。这样做时,会有一个带有'field ='的查询参数,后跟内部名称。还有其他可以找到的地方,以及可用于获取此类信息的其他sharepoint工具(另一张海报提到了SharePoint Manager)。
答案 2 :(得分:0)
我使用了“Keywords_x0020_ x002f _x0020_Folksnomy”,这对我有用。 我获取了Document库的所有列并将其绑定到GridView,在GridView中我找到了这个名称。
显示列名称=&gt;关键词(子过程,方法,服务模型等)
错误的是=&gt; Keywords_x0020_(子过程,_x0020_Methodology,_x0020_Servicing_x0020_Model,_x0020_etc)
新发现的正确名称=&gt; Keywords_x0020_ x002f _x0020_Folksnomy