无法从 javascript 客户端对象模型中文件夹内的 SharePoint 文档检索元数据
Can't retrieve metadata from a document in SharePoint inside a folder in javascript client object model
当包含元数据的文档不在文件夹中时,下面的代码对我来说工作正常。一旦将文档放入文档库中的文件夹中,它就会在 while (enumerator.moveNext()) {
后停止工作 我将 console.log 放在代码中的单独行中,这就是我停止收到响应的时间点.
我创建了一个名为 viewitem.aspx 的新 dispform.aspx,并将此 js 文件链接到它以提取元数据并将其显示在页面上的不同 div 中。
下面是代码:
function getBody() {
var context = new SP.ClientContext("https://xxx.sharepoint.com/sites/xxx");
var list = context.get_web().get_lists().getByTitle('Docs');
JSRequest.EnsureSetup();
var listItemId = GetUrlKeyValue("ID");
var item = new SP.CamlQuery();
item.set_viewXml("<View><Query><Where><Eq><FieldRef Name='ID'/><Value Type='Number'>" + listItemId + "</Value></Eq></Where></Query></View>");
returnedItemsBE1 = list.getItems(item);
context.load(returnedItemsBE1);
context.executeQueryAsync(onSucceededCallbackBE1);
}
function onSucceededCallbackBE1() {
var enumerator = returnedItemsBE1.getEnumerator();
while (enumerator.moveNext()) {
var listItem = enumerator.get_current();
var tmbod = listItem.get_item('TmBody');
var tmfile = listItem.get_item('TmAttachmentTitle');
var tmId = listItem.get_item('TmTransID');
var tmfileurl = 'https://xxx.sharepoint.com/sites/xxx/Docs/'+tmId+'_'+tmfile;
document.getElementById("fileLink").href = tmfileurl;
document.getElementById("fileLink").innerText = tmfile ;
var bdiv = document.getElementById("bodyDiv");
bdiv.innerHTML = tmbod;
}
}
`
我正在在线使用 SharePoint 2013,我无法弄清楚文件夹中的项目有什么不同,URL 发生了变化,但它仍然包含文件 ID 等...
我搜索了又搜索,但找不到任何参考资料,如有任何帮助,我们将不胜感激!
尝试在 View
标签中使用 Scope='Recursive'
。否则,它只会获取给定目录中的文件。
item.set_viewXml("<View Scope='Recursive'><Query><Where><Eq><FieldRef Name='ID'/><Value Type='Number'>" + listItemId + "</Value></Eq></Where></Query></View>");
有四种视图范围:
默认(未给出范围):检索当前文件夹中的所有文件
全部:检索当前文件夹中的文件和文件夹
递归:检索当前文件夹及其子文件夹中的文件,以及子文件夹中的文件等
RecursiveAll:与 Recursive 相同,但也检索子文件夹。
如果视觉解释更适合您,我发现了这个 handy page。
当包含元数据的文档不在文件夹中时,下面的代码对我来说工作正常。一旦将文档放入文档库中的文件夹中,它就会在 while (enumerator.moveNext()) {
后停止工作 我将 console.log 放在代码中的单独行中,这就是我停止收到响应的时间点.
我创建了一个名为 viewitem.aspx 的新 dispform.aspx,并将此 js 文件链接到它以提取元数据并将其显示在页面上的不同 div 中。
下面是代码:
function getBody() {
var context = new SP.ClientContext("https://xxx.sharepoint.com/sites/xxx");
var list = context.get_web().get_lists().getByTitle('Docs');
JSRequest.EnsureSetup();
var listItemId = GetUrlKeyValue("ID");
var item = new SP.CamlQuery();
item.set_viewXml("<View><Query><Where><Eq><FieldRef Name='ID'/><Value Type='Number'>" + listItemId + "</Value></Eq></Where></Query></View>");
returnedItemsBE1 = list.getItems(item);
context.load(returnedItemsBE1);
context.executeQueryAsync(onSucceededCallbackBE1);
}
function onSucceededCallbackBE1() {
var enumerator = returnedItemsBE1.getEnumerator();
while (enumerator.moveNext()) {
var listItem = enumerator.get_current();
var tmbod = listItem.get_item('TmBody');
var tmfile = listItem.get_item('TmAttachmentTitle');
var tmId = listItem.get_item('TmTransID');
var tmfileurl = 'https://xxx.sharepoint.com/sites/xxx/Docs/'+tmId+'_'+tmfile;
document.getElementById("fileLink").href = tmfileurl;
document.getElementById("fileLink").innerText = tmfile ;
var bdiv = document.getElementById("bodyDiv");
bdiv.innerHTML = tmbod;
}
}
`
我正在在线使用 SharePoint 2013,我无法弄清楚文件夹中的项目有什么不同,URL 发生了变化,但它仍然包含文件 ID 等...
我搜索了又搜索,但找不到任何参考资料,如有任何帮助,我们将不胜感激!
尝试在 View
标签中使用 Scope='Recursive'
。否则,它只会获取给定目录中的文件。
item.set_viewXml("<View Scope='Recursive'><Query><Where><Eq><FieldRef Name='ID'/><Value Type='Number'>" + listItemId + "</Value></Eq></Where></Query></View>");
有四种视图范围:
默认(未给出范围):检索当前文件夹中的所有文件
全部:检索当前文件夹中的文件和文件夹
递归:检索当前文件夹及其子文件夹中的文件,以及子文件夹中的文件等
RecursiveAll:与 Recursive 相同,但也检索子文件夹。
如果视觉解释更适合您,我发现了这个 handy page。