打破sharepoint列表中所有项目的继承

时间:2014-04-30 11:37:36

标签: vb.net sharepoint inheritance permissions listitem

我正在尝试在Visual Basic中构建一个for循环,它将遍历sharepoint数据库列表中的每个项目,并阻止它继承其父项的权限。我得到一个Null Exception,因为我的查询对象为null。我已经搜索了,我发现的所有代码片段都没有为查询定义一个值,并且像我一样编写代码,为什么这是一个问题。

Imports System
Imports Microsoft.SharePoint.Client
Imports SP = Microsoft.SharePoint.Client

Module Module1
    Sub Main()
        Dim siteUrl As String = "https://cws1.conti.de/content/00009504"
        Dim clientContext As New ClientContext(siteUrl)
        Dim oList As List = clientContext.Web.Lists.GetByTitle("TestBI")
        Dim query As CamlQuery
        query.ViewXml = "<Where><Eq><FieldRef Name='Account' /><Value Type='Text'></Value></Eq></Where>"
        Dim oListItems As ListItemCollection = oList.GetItems(query)
        For numItems As Integer = 0 To 2
            oListItems(numItems).BreakRoleInheritance(True, False)
        Next

        clientContext.ExecuteQuery()
    End Sub
End Module

我之前从未编写VB,而且我不熟悉在Sharepoint上自动化任何东西,所以我真的很感激任何帮助。

1 个答案:

答案 0 :(得分:0)

您需要先将对象的实例分配给查询变量,然后才能使用它。现在,您只声明一个变量。 改变这一行:

Dim query AS CamlQuery

Dim query AS new CamlQuery

此外,CamlQuery需要一个完整的<View>标记。所以将你的CAML改为<View><Query><Where><Eq><FieldRef Name='Account' /><Value Type='Text'></Value></Eq></Where></Query></View>,你应该好好去。

如果您希望从列表中检索所有项目,请使用CamlQuery.CreateAllItemsQuery()方法。

Dim query AS CamlQuery = CamlQuery.CreateAllItemsQuery()