如何使用其InternalName从SharePoint列表加载项?据我所知,我可以使用Id或标题获得它,如下所示:
var clientContext = new SP.ClientContext('/News/');
var web = clientContext.get_web();
var list = web.get_lists().getById("{1DBA9283-0AFA-4FA1-9BBA-70D8D190971F}");
...
no CSOM只提供按Id或Title查询列表的方法。
请参阅http://msdn.microsoft.com/en-us/library/ee549620.aspx
SharePoint列表架构目前不提供InternalNames。请参阅架构描述http://msdn.microsoft.com/en-us/library/ms415091.aspx
Thorsten
它总是建议使用ListUrl获取列表,当列表标题更改时,ListUrl不会更改。
我不知道你是不是这个意思,但在我的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支持这一点。
第2版:另一种只使用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}','');" />
第三版:在没有任何安全检查的情况下小心使用此JavaScript。因为例如,您已经将此解决方案交付给了一个站点,该站点有两个列表。第一个是你建议使用这个JavaScript,第二个是。如果您的自定义按钮同时出现在两个列表中,则要处理第二个列表,但尽可能长时间地使用按钮会激发第一个列表
假设您有一个清除内容的按钮,并且在两个列表中都有一个名为"标题"的列。如果您在第二个列表中,并按下"删除标题"按钮,而不是在第一个列表中的,则具有相同itemId的项目的标题将被删除。在你的第二个清单上什么都没发生
如果指定的列表是您正在处理的列表,则这将从您的按钮的可见性中显示出来,并且不进行检查。
Shegit
编辑:滚动我的标签我发现了这个:检索项目从文件夹与EcmaScript&COM
我想是你在sharepoint stackexchange上问了同样的问题。为了链接到我的答案,这里有链接。在这里,我给出了一个完整的例子,说明如何使用"internalName"(url)