代码之家  ›  专栏  ›  技术社区  ›  Philipp Schmid

向SharePoint中的自定义列表类型添加字段时出现问题

  •  0
  • Philipp Schmid  · 技术社区  · 15 年前

    我定义了一个 SharePoint的自定义列表模板类型 . 我使用vsewss 1.3安装它,并且所有的操作似乎都正常。

    我添加了一个自定义操作 向列表中添加其他列(SPFields) . 但是,每次代码执行时,都会抛出和参数exception, '值不在预期范围内。' 错误信息。此行为似乎特定于中建议的自定义类型。 this blog post .

    下面是相关代码(此列表是使用浏览器交互创建的自定义列表模板类型的实例),它尝试将字段添加到此列表的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项是基列表类型(内置自定义列表),则同样的代码执行得很好。

    有没有 需要显式设置的字段 坎贝尔 并使用 addFieldAsXML()方法 是否直接使此代码与自定义列表模板类型一起使用?

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

    2 回复  |  直到 15 年前
        1
  •  1
  •   Philipp Schmid    15 年前

    结果发现这是由 因为调用thislist.schemaxml会将splist对象置于无法恢复的状态! 获取对同一SharePoint列表的新引用,例如splist new list=thislist.parentweb.lists[thislist.id]解决了该问题!

        2
  •  0
  •   Kusek    15 年前

    您要添加的字段类型是什么?这是内部字段还是自定义字段类型,此函数format2spFieldType返回什么? 如果它是内置字段,您可以尝试使用

    thisList.Fields.Add("DisplayName", SPFieldType.Integer, false);
    
    推荐文章