我正在开发一个网络应用程序,需要获取位于SharePoint上的文件夹和子文件夹,并将其放在TreeView中以表示层次结构。我的应用程序并不运行在与SharePoint相同的服务器上,因此我认为最好的方法是通过Web服务来实现。
因此,我向我的项目添加了SiteData.asmx的Web引用,并找到了以下代码:
我从msdn论坛复制了这段代码,但它不起作用。 service.EnumerateFolder总是返回一个空数组,也就是说enArray总是为Nothing,并且我会得到一个错误:Object Reference not set to an instance of an object。
这段代码有效吗? 还有其他方法可以做到这一点吗? 我对Web服务和Web应用程序非常新手。 注意:我正在使用Visual Studio 2010和SharePoint 2010。
因此,我向我的项目添加了SiteData.asmx的Web引用,并找到了以下代码:
Private Sub GetSiteData()
Dim RootFolder As String = "http://mySharepointServer/site/doc_site"
Dim DirWSSP As String = "http://mySharePointServer/_vti_bin/SiteData.asmx"
'Definitions of TreeView
Dim tree As TreeView
Dim raiz As TreeNode
Dim no As TreeNode
tree = Page.FindControl("trvFolder")
raiz = New TreeNode(RootFolder)
tree.Nodes.Clear()
tree.Nodes.Add(raiz)
' Definitions of web service
Dim service As New SP_SiteData.SiteData
service.Credentials = New System.Net.NetworkCredential("userID", "password", "domain")
Dim enArray() As SP_SiteData._sFPUrl
service.EnumerateFolder(RootFolder, enArray)
Dim en As SP_SiteData._sFPUrl
For Each en In enArray
If en.IsFolder Then
no = New TreeNode(en.Url)
raiz.ChildNodes.Add(no)
End If
Next
End Sub
我从msdn论坛复制了这段代码,但它不起作用。 service.EnumerateFolder总是返回一个空数组,也就是说enArray总是为Nothing,并且我会得到一个错误:Object Reference not set to an instance of an object。
这段代码有效吗? 还有其他方法可以做到这一点吗? 我对Web服务和Web应用程序非常新手。 注意:我正在使用Visual Studio 2010和SharePoint 2010。