6

我正在尝试对 SPList 进行查询,但我收到一条错误消息,指出 List 不存在。如何以正确的方式阅读当前上下文?不知何故是部署问题?

var clientContext = new SP.ClientContext.get_current();;
var oList = clientContext.get_web().get_lists().getByTitle("MyList");

var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml('<View><Query><Where><Eq><FieldRef Name="SearchUserName" /><Value Type="Text">' + loginName + '</Value></Eq></Where></Query></View>');
this.collListItem = oList.getItems(camlQuery);

clientContext.load(collListItem);

clientContext.executeQueryAsync(Function.createDelegate(this, function (sender, args) {
  //do something
}), Function.createDelegate(this, function (sender, args) {
  //log error
}));

我收到错误:列表 'MyList' 在 URL '.... 站点路径' 的站点中不存在

我究竟做错了什么?是否有另一种阅读当前上下文的方式?

4

4 回答 4

7

你可能会遇到一个让我绊倒的简单问题:

使用getByTitle()时需要使用List的显示名称,

您的列表显示名称是“MyList”还是“My List”?

  • 列表“标题”=列表显示名称(通常有空格)
  • 列表“名称”=列表内部名称(通常没有空格或特殊字符)

要查找显示名称,请查看“站点内容”页面中的列表名称。

要查找内部名称,请在将鼠标悬停在(或单击)“站点内容”中的列表名称上时查看 URL。

尝试get_web().get_lists().getByTitle("My List");

于 2017-03-21T05:27:09.193 回答
4

请记住,SharePoint 将每个子网站视为一个单独的网站。如果您的代码在 SharePoint 网站的根目录上运行,但列表位于子网站中,则您的代码将不起作用。然后,您需要在设置客户端上下文时指定站点。

于 2013-08-30T16:53:19.060 回答
1

您确定 get_current 实际上返回了正确的上下文吗?

指定上下文可能更安全。

此外,您可以使用列表 ID 而不是名称,然后通过 ID 获取。

于 2013-08-30T16:12:06.773 回答
0

在遇到同样的问题后,我意识到我的错误如下:我正在使用我的域的根 URL 运行 Sharepoint 的工作台

所以我用 URL 运行工作台

https://mydomainname.sharepoint.com/_layouts/15/workbench.aspx

虽然我应该使用

https://mydomainname.sharepoint.com/sites/myfirstsite/_layouts/15/workbench.aspx
于 2022-02-17T12:56:24.547 回答