SharePoint上にあるフォルダーとサブフォルダーを取得し、階層を表すTreeViewに配置する必要があるWebアプリケーションを開発しています。私のアプリケーションはSharePointと同じサーバーで実行されていないため、これを行うための最良の方法はWebサービスを使用することだと思います。
そこで、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は常に何も表示されず、エラーが発生します。オブジェクト参照がオブジェクトのインスタンスに設定されていません。
このコードは機能しますか?これを行う別の方法はありますか?私はWebサービスとWebアプリケーションの初心者です。OBS:VisualStudio2010とSharePoint2010を使用しています