【问题标题】:How do I specify list URL when I create it using sharepoint pnp js library?使用 sharepoint pnp js 库创建列表 URL 时如何指定列表 URL?
【发布时间】:2020-09-09 05:26:13
【问题描述】:

我正在使用 Sharepoint pnp js 库来创建一个列表: https://pnp.github.io/pnpjs/sp/lists/

创建时如何指定列表 URL(不是标题)?

意思是,如果我希望我的列表 URL 看起来像这样(例如): https://contoso.sharepoint.com/sites/Site/lists/SomeCustomListUrl

我很感兴趣在创建列表时如何指定lists/SomeCustomListUrl 部分。

例如,如果我使用 CSOM 创建它,则 ListCreationInformation 中有 Url 参数,在 SPMeta2 中,列表定义中有 CustomUrl 参数。我在 pnp js 中找不到类似的东西?

如果不能使用 pnp 库,是否可以使用 REST api 做到这一点?

【问题讨论】:

    标签: sharepoint pnp-js


    【解决方案1】:

    在 PnP js 中,不需要指定 List Url,只需要传递 ListName,它会自动创建 List Url。它将在运行 SPFX 解决方案的站点创建列表,请查看以下演示:

      sp.web.lists.add("SomeCustomListUrl", "This is a description of Generic List.", 100, true, { OnQuickLaunch: true }).then(i => {
          console.log(i);
        })
    

    这是 sp.web.lists.add 函数中的 all 参数:

    【讨论】:

    • 谢谢杰瑞,但关键是我确实希望列表 URL 和列表标题不同,因此问题。我不希望自动生成列表 URL。原因是允许用户稍后更改列表标题,但应用程序需要一种方法来查找列表(而不是通过 ID,因为 ID 是特定于站点的)。您能推荐一种更好的方法来实现这一目标吗?
    • 这个概念类似于sharepoint字段名称:有应用程序使用的“内部名称”,有用户可编辑的“标题”,还有作为唯一guid的“id”。所以我想要一个列表的“内部名称”。之前,我们为此使用了列表 URL。
    • 对于 PnP.js 和 Rest API,它们都没有提供 Url 参数进行覆盖,这是演示 Rest API 调用,codesharepoint.com/rest-api/…。也只提供列表标题。由于这个限制,我担心这应该与 CSOM 有所不同......
    【解决方案2】:

    在这里更新以防万一,这仍然是 CSOM 和 PnPjs v2.0.9 之间的差距。

    但是,作为一种解决方法,您可以使用 URL 作为其标题创建列表,并立即更新标题。例如:

    const listUrl = "MyCustomList";
    const listTitle = "My Custom List";
    
    sp.web.lists.add(listUrl).then(res => res.list.update({ Title: listTitle }));
    

    最终结果是一个 URL 为 [web]/Lists/MyCustomList 的列表,但列表标题为 My Custom List

    使用 PnPjs 检索列表的后续调用应使用新标题,例如web.lists.getByTitle("My Custom List");.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多