新的用户体验(一般)
您可以利用column formatting。它可以在现代列表中用于更改列(字段)的呈现方式。一种可能的用途是呈现带有当前项目属性的链接。几乎所有字段都可以引用,包括 ID,但遗憾的是 GUID 不能。
要解决 GUID 字段的问题(无代码),您可以在列表中创建文本列并调用它,例如Log Change Request。然后创建简单的工作流并将这个新创建的列设置为当前项目的 GUID。不要忘记将工作流设置为在创建新项目时运行。
然后转到列表(使用现代经验)并设置列格式。
右侧的窗格将打开。将下面的 JSON 粘贴到该字段并保存更改。
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/column-formatting.schema.json",
"elmType": "a",
"txtContent": "Link",
"attributes": {
"href": {
"operator": "+",
"operands": [
"https://company.sharepoint.com/sites/ABC/wfsvc/e73969f753574a3bb30c8d3ce3ab9c56/WFInitForm.aspx",
"?List={f9b73015-1131-442d-95b8-9682149a27e6}",
"&ID=",
"[$ID]",
"&ItemGuid=",
"@currentField",
"&TemplateID={64193686-AB59-4D44-B0EB-FBD8E2CB7A1F}",
"&WF4=1",
"&Source=https%3A%2F%2Fcompany%2Esharepoint%2Ecom%2Fsites%2FABC%2FCourseDocuments%2FForms%2FCourseDocuments%2Easpx%3FRootFolder%3D%252Fsites%252FDCU%252FCourseDocuments%252FBasic%2520Stuff%26FolderCTID%3D0x0120D52000E334520C326BA440BF6F86F3CA80AE2800E3DBD1BD3A1EA348A9D944A931464C4D"
]
}
}
}
创建项目,当工作流程完成后,该列应包含您需要的链接。
经典体验
对于经典(旧版)视图可以使用Client Side Rendering。它与新体验中的列格式设置相同。
创建文本列并调用它,例如Log Change Request。下一步是创建 Javascript 文件,将其上传到 SharePoint(某处)并将此 javascript 注册为 JSLink 到该列。
1) 创建 Javascript 文件并调用它,例如日志更改请求.js
// CSR-override for MDS enabled site
RegisterModuleInit("~site/SiteAssets/log-change-request.js", RegisterLink);
// CSR-override for MDS disabled site
RegisterLink();
function RegisterLink() {
var field = {};
field.Templates = {};
field.Templates.Fields = {
"LogChangeRequest": {
"View": fieldTemplate
}
};
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(field);
}
function fieldTemplate(context) {
var item = context.CurrentItem;
return "<a href='"
+ "https://company.sharepoint.com/sites/ABC/wfsvc/e73969f753574a3bb30c8d3ce3ab9c56/WFInitForm.aspx"
+ "?List={f9b73015-1131-442d-95b8-9682149a27e6}"
+ "&ID=" + item.ID
+ "&ItemGuid=" + item.UniqueId
+ "&TemplateID={64193686-AB59-4D44-B0EB-FBD8E2CB7A1F}"
+ "&WF4=1"
+ "&Source=https%3A%2F%2Fcompany%2Esharepoint%2Ecom%2Fsites%2FABC%2FCourseDocuments%2FForms%2FCourseDocuments%2Easpx%3FRootFolder%3D%252Fsites%252FDCU%252FCourseDocuments%252FBasic%2520Stuff%26FolderCTID%3D0x0120D52000E334520C326BA440BF6F86F3CA80AE2800E3DBD1BD3A1EA348A9D944A931464C4D"
+ "'>"
+ "Link"
+ "</a>";
}
2) 将此文件上传到网站资产到您在其中创建列 Log Change Request 的网站集。 注意:这个文件可以放在任何你只需要改变它的路径的地方。
3) 下载安装SharePoint Online Client Components SDK。它将复制一些使用 PowerShell 连接到 SharePoint 所需的 DLL。
4) 运行下面的 PowerShell 脚本,它将列的 JSLink 属性设置为 Javascript 文件的路径。
.NET CSOM 解决方案如何设置列
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime")
function Set-JSLink() {
Param(
[string]$SiteUrl,
[string]$ListTitle,
[string]$ColumnTitle,
[string]$JSLinkUrl
)
$creds = Get-Credential
$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl)
$ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($creds.UserName, $creds.Password)
$list = $ctx.Web.Lists.GetByTitle($ListTitle)
$ctx.Load($list)
$ctx.ExecuteQuery()
$column = $list.Fields.GetByTitle($ColumnTitle)
$column.JSLink = $JSLinkUrl
# Make it read only so it is not visible in new or edit form
$column.ReadOnlyField = $true
$column.Update()
$ctx.ExecuteQuery()
$ctx.Dispose()
}
# Example:
Set-JSLink -SiteUrl "https://tenant.sharepoint.com/sites/ABC" -ListTitle "Document Sets" -ColumnTitle "Log Change Request" -JSLinkUrl "~site/SiteAssets/log-change-request.js"
JSOM解决方案如何设置列
使用这种方法不需要安装任何 SDK。只需将此 HTML 代码放入脚本编辑器即可。
<form>
<input type="text" id="listTitle" placeholder="List title" /><br />
<input type="text" id="columnTitle" placeholder="Column title" /><br />
<input type="text" id="jsLink" placeholder="JSLink Url" /><br />
<button onclick="setColumn(); return false;">Configure column</button>
</form>
<script type="text/javascript">
'use strict';
SP.SOD.executeFunc("sp.js")
function setColumn() {
var listTitle = document.getElementById("listTitle").value;
var columnTitle = document.getElementById("columnTitle").value;
var jsLink = document.getElementById("jsLink").value;
var cc = new SP.ClientContext()
var list = cc.get_web().get_lists().getByTitle(listTitle);
cc.load(list);
cc.executeQueryAsync(
function () {
var column = list.get_fields().getByTitle(columnTitle);
column.set_jsLink(jsLink);
column.set_readOnlyField(true);
column.update();
cc.executeQueryAsync(
function () {
alert("Column sucessfuly configured");
},
function (sender, args) {
console.error(args.get_message());
}
);
},
function (sender, args) {
console.error(args.get_message());
}
);
cc.dispose();
}
</script>
5) 打开一些文档集,添加文档,该列应包含您需要的链接。
注意:
因为文档集视图仅在经典体验中,它确实
无论设置中的设置如何(新体验或经典体验)。