如何在自定义按钮中重新创建 Sharepoint 快速编辑按钮功能

How to recreate Sharepoint quick edit button functionality in custom button

出于样式目的,我去掉了网站上的 O365 栏和编辑栏 (#s4-ribbonrow)。我希望用户在 select 列表项时仍然能够使用 "quick edit" 按钮提供的功能。我如何在我的页面上的自定义按钮中实现相同的功能?

打开 SharePoint 快速编辑模式进行查看

SharePoint 使用此方法:

EnsureScriptParams('inplview', 'InitGridFromView', 'VIEW ID');return false;

因此,您的示例锚元素:

<a onclick="EnsureScriptParams('inplview', 'InitGridFromView', SP.ListOperation.ViewOperation.getSelectedView());return false;">TEST</a>

使用 SP.ListOperation.ViewOperation.getSelectedView() 在较旧的共享点中获取视图 ID,或在 SharePoint Online 中使用 _spPageContextInfo.viewId

打开 SharePoint 编辑项目对话框

使用 SP.ListOperation.Selection.getSelectedItems() 从视图中获取所选项目。

单击按钮处理程序应如下所示:

if (SP.ListOperation.Selection.getSelectedItems().length === 1) {
    var itm = SP.ListOperation.Selection.getSelectedItems()[0];
    var _url = _spPageContextInfo.siteServerRelativeUrl + '/' + _spPageContextInfo.layoutsUrl + '/listform.aspx?PageType=6&ListId=' +_spPageContextInfo.pageListId + '&ID=' + itm.id;
    console.log(_url);
    var options = {
        title: "Edit item",
        width: 500,
        height: 600,
        showClose: true,
        allowMaximize: true,
        autoSize: true,
        url: _url
    };
    SP.UI.ModalDialog.showModalDialog(options); 
}

最难的部分是生成正确的 url:

PageType=6表示editform,4的值表示dispform

要正确 link 到 listform.aspx 页面,您需要使用一些 _spPageContextInfo 属性,例如列表 ID、相对服务器 url 和布局文件夹 url