新用户体验(一般)
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
. 它与新体验中的列格式相同。
日志更改请求
1) 创建Javascript文件并调用它,例如log change-请求.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>";
}
日志更改请求
.
3) 下载安装
SharePoint Online Client Components SDK
. 它将复制一些使用PowerShell连接到SharePoint所需的dll。
JSLink
属性设置为Javascript文件的路径。
[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) 打开一些文档集,添加文档,列中应该包含您需要的链接。
注:
不管设置中设置了什么(新的或经典的体验)。