0

通常我们从 SharePoint 服务器对象模型中获取数据。但我需要使用 JSOM 从 SharePoint 列表中收集数据。

我的要求如下:

有一个名为 List1 的列表,其中包含 3 列 ID、标题、状态

我需要获取 Status 为 1 且 Title = "My given title" 的所有数据

请提供使用 JSOM 的解决方案。

4

1 回答 1

1

这里的文档很好地解释了 JavaScript 对象模型。

本质上,您需要创建一个ClientContext对象并使用它来指定要执行的指令。您将用于ClientContext.load()指定要使用检索到的信息填充哪些对象,然后用于ClientContext.executeQueryAsync()执行任何排队的指令。在您提供给您的回调函数的上下文中,executeQueryAsync您可以访问查询结果。

下面的示例演示了典型的方法。

<script>
ExecuteOrDelayUntilScriptLoaded(getListItems,"sp.js");
function getListItems(){
    var clientContext = new SP.ClientContext();
    var list = clientContext.get_web().get_lists().getByTitle("List1");
    var camlQuery = new SP.CamlQuery();
    camlQuery.set_viewXml( /* build a CAML query to retrieve your items */
        "<View><Query>" +
        "<Where>" + 
            "<And>" +
                "<Eq><FieldRef Name=\"Status\"/><Value Type=\"Text\">1</Value></Eq>" +
                "<Eq><FieldRef Name=\"Title\"/><Value Type=\"Text\">My given title</Value></Eq>" + 
            "</And>"+
        "</Where>" +
        "</Query></View>");
    var items = list.getItems(camlQuery);
    clientContext.load(items);
    clientContext.executeQueryAsync(function(){
        var itemArray = [];
        var itemEnumerator = items.getEnumerator();
        while(itemEnumerator.moveNext()){ 
            /* loop through all your results */
            var item = itemEnumerator.get_current();
            var id = item.get_item("ID");
            var title = item.get_item("Title");
            itemArray.push(id + ": " + title);
        }
        alert("ID: Title\n"+itemArray.join("\n"));
    },function(sender,args){alert(args.get_message());});
}
</script>
于 2016-05-03T17:50:36.673 回答