Sharepoint UpdateList方法:新创建的列不可见

我研究过代码。它正在成功运作。 但我面临的问题是:

列中不显示新列(我尝试使用With Setting Required =“TRUE”)。

我尝试使用可见和不可见列的字段值进行比较。 我发现的差异是:可见列(手动创建)不包含版本值。 我正在创建的那些列有它。

所以我尝试将null值传递给“ndVersion.Value”。

但它仍然没有工作,并自动为版本增加一些价值。

你能帮我解决这个问题吗?

我在这里尝试了解决方案。

但它再次没有工作。 🙁

将列添加到浏览器中的列表时,实际上会发生以下几种情况:

  • 字段已添加到列表中
  • 字段添加到列表内容类型
  • 字段将添加到默认视图中

使用代码添加列时,您可能只是修改列表,而不是内容类型(定义新/编辑表单)或视图(定义列表视图)

var field = list.Fields[fieldName]; var ctype = list.ContentTypes[contentTypeId]; var fieldref = new SPFieldLink(field); ctype.FieldLinks.Add(fieldref); ctype.Update(); var view = list.Views[viewName]; view.ViewFields.Add(field); view.Update(); 

尝试将ReadOnly属性设置为“FALSE”

在MSDN上有很多有用的信息。

将列添加到内容类型

HowTo:向列表添加列(代码链接)

我会使用Microsoft.Sharepoint.dll提供的对象模型,而不是使用Web服务。

当您向内容类型添加新列时,Sharepoint中存在问题,因为更改并不总是下推到列表。 我认为,当您编辑内容类型时,Sharepoint UI会为您执行此操作,但是当您在代码中自己执行此操作时,您必须确保将更改下推到列表中。

有两种方法可以通过编程方式将内容类型数据添加到列表中

  • 通过schema.xml – >然后你必须让列表inheritance你的内容类型,但你仍然列出了你想要从你的内容类型中使用的所有字段。
  • 通过代码 – >将您的字段添加到内容类型,但是您必须再次将内容类型添加到列表中以确保列表中的所有字段都已填充