【问题标题】:Can't retrieve metadata from a document in SharePoint inside a folder in javascript client object model无法从 javascript 客户端对象模型中文件夹内的 SharePoint 文档中检索元数据
【发布时间】:2017-06-16 11:47:54
【问题描述】:

当包含元数据的文档不在文件夹中时,以下代码对我来说可以正常工作。一旦将文档放入文档库中的文件夹,它就会在 while (enumerator.moveNext()) { 之后停止工作>

我创建了一个名为 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 等...

我已经搜索和搜索,找不到任何参考,任何帮助将不胜感激!

【问题讨论】:

    标签: javascript sharepoint sharepoint-online csom sharepoint-object-model


    【解决方案1】:

    尝试在您的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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      • 1970-01-01
      • 2011-03-04
      相关资源
      最近更新 更多