gpt4 book ai didi

web-services - 使用 Web 服务获取 SharePoint 中的所有文件夹和子文件夹

转载 作者:行者123 更新时间:2023-12-04 04:22:32 26 4
gpt4 key购买 nike

我正在开发一个 Web 应用程序,它需要获取 SharePoint 上的文件夹和子文件夹,并放在表示层次结构的 TreeView 上。我的应用程序未在与 SharePoint 相同的服务器上运行,因此我认为最好的方法是通过 Web 服务。

所以我在我的项目中添加了对 SiteData.asmx 的 Web Reference,并找到了以下代码:

 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 总是什么都没有,我得到一个错误:对象引用未设置为对象的实例。

这段代码有效吗?还有另一种方法吗?我对网络服务和网络应用程序非常陌生。OBS:我正在使用 Visual Studio 2010 和 SharePoint 2010

最佳答案

ListItems 包括文件夹和文档,从网络服务中您可以区分“ows_ContentType”属性。在对象模型中,它们有一个 IsFolder 属性。

IEnumerable<XElement> result = from child in root.Descendants(xns + "row")
where child.Attribute("ows_ContentType").Value == "Folder"
select child;

此 LINQ 查询可用于 Web 方法结果以仅返回文件夹类型。即使您不了解 LINQ 调用,也很容易看出如何将其更改为适用于“文档”。

*相关说明“GetFolderCollection”的 Web 服务正在谈论 Sharepoint 文件夹,它表示网站目录文件夹。

关于web-services - 使用 Web 服务获取 SharePoint 中的所有文件夹和子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11120723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com