使用JavaScript变量存储访问SharePoint列表

Accessing SharePoint list with JavaScript Variable Storage

本文关键字:SharePoint 列表 访问 存储 JavaScript 变量 使用      更新时间:2023-09-26

我昨天开始用javascript,我试图从sharepoint 2010列表中获得一些信息,我想把它打印到一个表中。下面的代码在body标签中:

<script type="text/javascript">
    ExecuteOrDelayUntilScriptLoaded(mainFunction, "sp.js");
    var typeNumber = "1520";
    var statusArray = new Array(3);
    try {
        function mainFunction() {
            var clientContext = new SP.ClientContext.get_current();
            var oList = clientContext.get_web().get_lists().getByTitle('Projektstatus');
            //empty Query string cause there are some problems with a lookup field
            var emptyCamlQuery = new SP.CamlQuery();
            this.collListItem = oList.getItems(emptyCamlQuery);
            clientContext.load(collListItem);
            clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
            document.write(statusArray[2]);
        }
        function onQuerySucceeded(sender, args) {
            var listItemInfo = '';
            var i = 0;
            var listItemEnumerator = collListItem.getEnumerator();
            while (listItemEnumerator.moveNext()) {
                var oListItem = listItemEnumerator.get_current();
                if (oListItem.get_item('Title').match(typeNumber)) {
                    statusArray[i] = oListItem.get_item('KPI_Status');
                    //Works fine
                    alert("nummer:" + i + statusArray[i]);
                    i++;
                }
            }
        }
        function onQueryFailed(sender, args) {
            alert('Request failed. ' + args.get_message() + ''n' + args.get_stackTrace());
        }
        var tableOutput = "<table><tr><th>Indikatortyp</th><th>KPI-Status</th></tr>" +
                        "<tr><td>Kosten</td><td>" + statusArray[2] + "</td></tr>" +
                        "<tr><td>Technik</td><td>" + statusArray[1] + "</td></tr>" +
                        "<tr><td>Termin</td><td>" + statusArray[0] + "</td></tr>" +
                    "</table>"
        document.write(tableOutput);
    } catch (e) {
        alert(e);
    }
</script>

带有警报的输出工作正常,但当我想在表中打印statusArray时,这不起作用,因为变量未定义。我认为问题可能是与createDelegate()。

问题是因为您使用全局变量statusArray和您的代码,创建表是在onQuerySucceeded.

我的建议是:-封装statusArray变量-将表的创建移动到onQuerySucceeded