C# 如何检测Sharepoint文件何时位于子文件夹中
我正在网页上显示Sharepoint 2010文档库中的文件。我正在成功地显示文件及其图标的列表。但是,有些文件位于子文件夹中,我不想显示文件图标,而是想显示文件夹图标 如何检测文件是否位于子文件夹中? 我可以解析每个文件的ServerRelativeUrl以确定文件夹结构。我希望还有别的办法C# 如何检测Sharepoint文件何时位于子文件夹中,c#,sharepoint,C#,Sharepoint,我正在网页上显示Sharepoint 2010文档库中的文件。我正在成功地显示文件及其图标的列表。但是,有些文件位于子文件夹中,我不想显示文件图标,而是想显示文件夹图标 如何检测文件是否位于子文件夹中? 我可以解析每个文件的ServerRelativeUrl以确定文件夹结构。我希望还有别的办法 以下是Sharepoint库: using (ClientContext clientContext = new ClientContext(SharepointSite)) {
以下是Sharepoint库:
using (ClientContext clientContext = new ClientContext(SharepointSite))
{
var query = new CamlQuery
{
ViewXml = "<View Scope='RecursiveAll'>" +
"<Query>" +
"<Where>" +
"<Eq>" +
"<FieldRef Name='FSObjType' />" +
"<Value Type='Integer'>0</Value>" +
"</Eq>" +
"</Where>" +
"</Query>" +
"</View>"
};
var sourceList = clientContext.Web.Lists.GetByTitle("Test Library");
var files = sourceList.GetItems(query);
clientContext.Load(files);
clientContext.ExecuteQuery();
foreach (var file in files)
{
var id = file.Id;
var filename = file["FileLeafRef"].ToString();
var iconName = clientContext.Web.MapToIcon(filename, string.Empty, IconSize.Size16);
clientContext.ExecuteQuery();
var imgUrl = "http://sharepointsite/_layouts/images/" + iconName.Value;
Image iconImage = new Image {ImageUrl = imgUrl};
clientContext.Load(file.ParentList);
clientContext.ExecuteQuery();
var listUrl = file.ParentList.DefaultDisplayFormUrl;
HyperLink docLink = new HyperLink
{
Text = filename,
NavigateUrl = listUrl + "?ID=" + id //ToDo: fix
};
HtmlTableRow row = new HtmlTableRow();
HtmlTableCell cell1 = new HtmlTableCell();
cell1.Controls.Add(iconImage);
HtmlTableCell cell2 = new HtmlTableCell();
cell2.Controls.Add(docLink);
row.Cells.Add(cell1);
row.Cells.Add(cell2);
tbFiles.Rows.Add(row);
}
}
下面是生成该库中文件列表的代码:
using (ClientContext clientContext = new ClientContext(SharepointSite))
{
var query = new CamlQuery
{
ViewXml = "<View Scope='RecursiveAll'>" +
"<Query>" +
"<Where>" +
"<Eq>" +
"<FieldRef Name='FSObjType' />" +
"<Value Type='Integer'>0</Value>" +
"</Eq>" +
"</Where>" +
"</Query>" +
"</View>"
};
var sourceList = clientContext.Web.Lists.GetByTitle("Test Library");
var files = sourceList.GetItems(query);
clientContext.Load(files);
clientContext.ExecuteQuery();
foreach (var file in files)
{
var id = file.Id;
var filename = file["FileLeafRef"].ToString();
var iconName = clientContext.Web.MapToIcon(filename, string.Empty, IconSize.Size16);
clientContext.ExecuteQuery();
var imgUrl = "http://sharepointsite/_layouts/images/" + iconName.Value;
Image iconImage = new Image {ImageUrl = imgUrl};
clientContext.Load(file.ParentList);
clientContext.ExecuteQuery();
var listUrl = file.ParentList.DefaultDisplayFormUrl;
HyperLink docLink = new HyperLink
{
Text = filename,
NavigateUrl = listUrl + "?ID=" + id //ToDo: fix
};
HtmlTableRow row = new HtmlTableRow();
HtmlTableCell cell1 = new HtmlTableCell();
cell1.Controls.Add(iconImage);
HtmlTableCell cell2 = new HtmlTableCell();
cell2.Controls.Add(docLink);
row.Cells.Add(cell1);
row.Cells.Add(cell2);
tbFiles.Rows.Add(row);
}
}
使用(ClientContext=newclientcontext(SharepointSite))
{
var query=新的CamlQuery
{
ViewXml=“”+
"" +
"" +
"" +
"" +
"0" +
"" +
"" +
"" +
""
};
var sourceList=clientContext.Web.Lists.GetByTitle(“测试库”);
var files=sourceList.GetItems(查询);
加载(文件);
clientContext.ExecuteQuery();
foreach(文件中的var文件)
{
var id=file.id;
var filename=file[“FileLeafRef”].ToString();
var iconName=clientContext.Web.MapToIcon(文件名,string.Empty,IconSize.Size16);
clientContext.ExecuteQuery();
变量imgUrl=”http://sharepointsite/_layouts/images/“+iconName.Value;
图像iconImage=新图像{ImageUrl=imgUrl};
Load(file.ParentList);
clientContext.ExecuteQuery();
var listUrl=file.ParentList.DefaultDisplayFormUrl;
HyperLink docLink=新建超链接
{
Text=文件名,
NavigateUrl=listUrl+“?ID=“+ID//ToDo:修复
};
HtmlTableRow行=新的HtmlTableRow();
HtmlTableCell cell1=新的HtmlTableCell();
cell1.Controls.Add(iconImage);
HtmlTableCell cell2=新的HtmlTableCell();
cell2.Controls.Add(docLink);
row.Cells.Add(cell1);
行。单元格。添加(单元格2);
tbFiles.Rows.Add(行);
}
}
其结果是:
实际上,只有列表中的第一个文件位于最顶端的库中。其余部分在“测试文件夹”中。了解CAML查询属性的可用选项可能会有所帮助:
- 默认值:从特定文件夹获取文件和子文件夹
- RecursiveAll:从所有文件夹中获取文件和子文件夹
- FilesOnly:仅从特定文件夹获取文件(无文件夹)
- 递归:仅从所有文件夹中获取文件(无文件夹)
文件夹
属性以获取关联的,从中可以获取ServerRelativeUrl
属性,以便在下一次查询中使用该属性从该文件夹获取项目