使用ECMAScript / JavaScript对象模型按内部名称获取SharePoint列表

时间:2012-01-08 12:30:58

标签: javascript sharepoint sharepoint-2010 sharepoint-clientobject client-object-model

如何使用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 个答案:

答案 0 :(得分:2)

没有CSOM只提供通过它的Id或Title来查询列表的方法。

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

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

和Thorsten

答案 1 :(得分:2)

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

答案 2 :(得分: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和第二个。如果您在两个列表中都显示的自定义按钮比在第二个列表中使用的自定义按钮,但只要可能,使用按钮将触发到第一个列表。
假设你有一个清除内容的按钮,你在两个列表中都有一个名为“title”的列。如果您在第二个列表并按下“删除标题”按钮而不是第一个列表,则将删除具有相同itemId的项目中的标题。在你的第二个清单上什么也没发生 如果指定列表是您正在处理的列表,则会从按钮的可见性和未检查中显示。

Shegit

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

答案 3 :(得分:0)

我认为那是你在sharepoint stackexchange上提出同样问题的人。只是链接到我的答案,这里是链接。我在那里a complete example how you can get sharepoint lists using their "internalName" (url)