我已经为 SharePoint 定义了一个自定义列表模板类型。我使用 VSeWSS 1.3 安装它,一切似乎都正常。
我添加了一个自定义操作,它将向列表中添加额外的列 (SPFields)。但是,每次执行该代码时,它都会抛出 ArgumentException 并带有“值不在预期范围内”。错误信息。此行为似乎特定于此博客文章中建议的自定义类型。
以下是尝试向 thisList 的 SPFieldCollection 添加字段的相关代码(thisList 是我使用浏览器界面创建的自定义列表模板类型的一个实例):
SPFieldType fieldType = Format2SPFieldType(format);
SPField field = new SPField(thisList.Fields, fieldType.ToString(), fieldName);
thisList.Fields.Add(field);
最后一条语句 (thisList.Fields.Add(field)) 引发以下异常:
Message "Value does not fall within the expected range."
at Microsoft.SharePoint.SPFieldCollection.GetFieldByInternalName(String strName, Boolean bThrowException)
at Microsoft.SharePoint.SPFieldCollection.GetFieldByInternalName(String strName)
at Microsoft.SharePoint.SPFieldCollection.AddFieldAsXmlInternal(String schemaXml, Boolean addToDefaultView, SPAddFieldOptions op)
at Microsoft.SharePoint.SPFieldCollection.AddFieldAsXml(String schemaXml, Boolean addToDefaultView, SPAddFieldOptions op)
at Microsoft.SharePoint.SPFieldCollection.Add(SPField field)
如果 SPList 项是基本列表类型(内置自定义列表),则相同的代码执行得很好。
是否需要在CAML中显式设置任何字段并直接使用AddFieldAsXml() 方法使此代码与自定义列表模板类型一起使用?
更新:我还应该提到,这些字段实际上是在某些情况下创建的,即使调用引发了异常!