4

如何使用其 InternalName 从 SharePoint 列表加载项目?据我所知,我可以使用 Id 或 Title 来获取它,如下所示:

var clientContext = new SP.ClientContext('/News/');
var web = clientContext.get_web();
var list = web.get_lists().getById("{1DBA9283-0AFA-4FA1-9BBA-70D8D190971F}");
...
4

4 回答 4

2

它始终建议使用 ListUrl 获取列表,列表标题更改时不会更改。

于 2012-01-09T09:28:36.450 回答
2

不,CSOM 仅提供按 ID 或标题查询列表的方法。

请参阅http://msdn.microsoft.com/en-us/library/ee549620.aspx

SharePoint 列表架构目前不提供 InternalNames。请参阅架构描述http://msdn.microsoft.com/en-us/library/ms415091.aspx

托尔斯滕

于 2012-01-08T12:51:19.117 回答
1

我不知道你是不是这个意思,但是在我的 JavaScript 文件中,如果我先声明这三行,我就可以使用对象模型。

/// <reference name="MicrosoftAjax.js" />
/// <reference path="file://C:/Program Files/Common Files/Microsoft Shared/Web Server Extensions/14/TEMPLATE/LAYOUTS/SP.core.debug.js" />
/// <reference path="file://C:/Program Files/Common Files/Microsoft Shared/Web Server Extensions/14/TEMPLATE/LAYOUTS/SP.debug.js" />

这是相关代码,无需调用 {SelectedItem} 或其他东西即可工作:

var items = SP.ListOperation.Selection.getSelectedItems();
var listID = SP.ListOperation.Selection.getSelectedList();

这会加载(部分)客户端对象模型,所以我想你可以继续。因为这受 IntelliSense 支持。

Edit2:获取和使用仅包含 JavScript 的列表的另一种方法是

var web;  
var context;  
var listTitle = "ListName";  

function InitiateThisScript(itemId) {   
    context = new SP.ClientContext.get_current();  
    web = context.get_web();  
    list = web.get_lists().getByTitle(listTitle);  
    item = list.getItemById(itemId);  
    context.load(web;  
    context.load(list);  
    context.load(item);  
    context.executeQueryAsync(handleItem(item, list));  
}  

这种方式需要在我定义按钮的 Elements.xml 中调用它

CommandAction="javascript:InitiateThisScript('{SelectedItemId}','');" />

Edit3:在没有任何安全检查的情况下小心使用这个 JavaScript。因为例如您已将此解决方案交付给一个站点,该站点有两个列表。您建议使用此 JavaScript 的第一个和第二个。如果您有两个列表中都出现的自定义按钮,那么您在第二个列表中工作,但只要有可能,使用按钮触发到第一个列表。
假设您有一个清除内容的按钮,并且在两个列表中都有一个名为“标题”的列。如果您在第二个列表中并按下“删除标题”按钮而不是在第一个列表中,则具有相同 itemId 的项目的标题将被删除。在你的第二个清单上什么都没有发生。
如果指定的列表是您正在处理的列表,这会从您的按钮的可见性中出现并且没有检查。

舍吉特

编辑:滚动我的标签我发现了这个:Retrieve items from a folder with EcmaScript & COM

于 2012-01-11T15:21:37.833 回答
0

我想是你在 sharepoint stackexchange 上问了同样的问题。只是为了链接到我的答案,这里是链接。在那里,我给出了一个完整的示例,您如何使用它们的“internalName”(url)获取共享点列表

于 2012-06-13T21:17:49.897 回答