使用Javascript显示共享点库项

Display sharepoint library items with Javascript

本文关键字:共享 Javascript 显示 使用      更新时间:2023-09-26

我有3个库,我想显示库项的名称。如果我只想显示一个库的项目,一切都可以,但如果我要查找两个或多个库的项,它仍然只显示一个图书馆的项目。我的代码出了什么问题?

    <p id="AInfo">library A Items</p>
    <p id="BInfo">library B Items</p>
    <p id="CInfo">library C Items</p>
    <script type="text/javascript">
        jQuery(document).ready(function(){ExecuteOrDelayUntilScriptLoaded(fill, "sp.js"); });
        var siteUrl = '/Example/test/';
        liblist = new Array("A", "B", "C"); //list of the libraries
        var i=0;
        var lib;
        function fill(){
            while (i<3){
                lib = liblist[i];
                alert(lib);
                retrieveListItemsInclude();
                i++;
            }
        }

        function retrieveListItemsInclude() {

            var clientContext = new SP.ClientContext(siteUrl);
            var oList = clientContext.get_web().get_lists().getByTitle(lib);
            var camlQuery = new SP.CamlQuery();
            camlQuery.set_viewXml('<View><RowLimit>100</RowLimit></View>');
            this.collListItem = oList.getItems(camlQuery);
            clientContext.load(collListItem, 'Include(Id, DisplayName, HasUniqueRoleAssignments)');
            clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
        }

            function onQuerySucceeded(sender, args) {
                var listItemInfo = '';
                var listItemEnumerator = collListItem.getEnumerator();            
                while (listItemEnumerator.moveNext()) {
                    var oListItem = listItemEnumerator.get_current();
                    listItemInfo += oListItem.get_displayName()+ '<br>';
                }
                var x = listItemInfo.toString();
                document.getElementById(lib+"Info").innerHTML = x;
        }

        function onQueryFailed(sender, args) {
            var x = 'Request failed. ' + args.get_message() + ''n' + args.get_stackTrace();
            document.getElementById(lib+"Info").innerHTML = x;  
        }
    </script>

我认为您需要等待第一个请求完成后再执行第二个请求。类似的东西(但代码很脏,因为你应该避免全局变量…)

<p id="AInfo">library A Items</p>
<p id="BInfo">library B Items</p>
<p id="CInfo">library C Items</p>
<script type="text/javascript">
    jQuery(document).ready(function(){ExecuteOrDelayUntilScriptLoaded(fill, "sp.js"); });
    var siteUrl = '/Example/test/';
    liblist = new Array("A", "B", "C"); //list of the libraries
    var i=0;
    var lib = liblist[i];
    retrieveListItemsInclude();
    function retrieveListItemsInclude() {

        var clientContext = new SP.ClientContext(siteUrl);
        var oList = clientContext.get_web().get_lists().getByTitle(lib);
        var camlQuery = new SP.CamlQuery();
        camlQuery.set_viewXml('<View><RowLimit>100</RowLimit></View>');
        this.collListItem = oList.getItems(camlQuery);
        clientContext.load(collListItem, 'Include(Id, DisplayName, HasUniqueRoleAssignments)');
        clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
    }

        function onQuerySucceeded(sender, args) {
            var listItemInfo = '';
            var listItemEnumerator = collListItem.getEnumerator();            
            while (listItemEnumerator.moveNext()) {
                var oListItem = listItemEnumerator.get_current();
                listItemInfo += oListItem.get_displayName()+ '<br>';
            }
            var x = listItemInfo.toString();
            document.getElementById(lib+"Info").innerHTML = x;
            if (++i<3) {
              lib = liblist[i];
              retrieveListItemsInclude()
            }
    }

    function onQueryFailed(sender, args) {
        var x = 'Request failed. ' + args.get_message() + ''n' + args.get_stackTrace();
        document.getElementById(lib+"Info").innerHTML = x;  
    }
</script>

您可以创建.ASHX web服务并将其部署到SharePoint Server上。然后,您可以使用REST和JSON从JavaScript中使用HttpRequest查询它。

http://msdn.microsoft.com/en-us/library/bb457204(v=office.12).aspx