我定义了一个 SharePoint 的自定义列表模板类型. 。我使用 VSeWSS 1.3 安装它,一切似乎都运行正常。

我添加了一个自定义操作,它将 将附加列 (SPFields) 添加到列表中. 。但是,每次执行该代码时,它都会抛出 ArgumentException 并带有 “价值不在预期范围内。” 错误信息。此行为似乎特定于自定义类型,如中所建议的 这篇博文.

以下是相关代码(thisList 是使用浏览器界面创建的自定义列表模板类型的实例),它尝试将字段添加到 thisList 的 SPFieldCollection:

                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() 方法 直接使此代码与自定义列表模板类型一起使用?

更新: 我还应该提到的是,即使调用抛出异常,在某些情况下实际上也会创建这些字段!

有帮助吗?

解决方案

原来,这是造成的,因为调用thisList.SchemaXML把SPList对象为,我是不是能够从恢复状态!获取一个新的参考同一SharePoint列表,例如, SPList newList = thisList.ParentWeb.Lists [thisList.ID]解决的问题!

其他提示

什么是现场的您要添加的类型?是一个内部字段或自定义字段类型,这是什么功能Format2SPFieldType回报? 如果它是一个内置的字段,你可以尝试添加

thisList.Fields.Add("DisplayName", SPFieldType.Integer, false);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top