Новый пользовательский опыт (в целом)
Вы можете использовать форматирование столбца .Его можно использовать в современных списках, чтобы изменить способ отображения столбца (поля).Одно из возможных применений - сделать ссылку со свойствами текущего элемента.Можно ссылаться почти на все поля, включая 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"
]
}
}
}
Создайте элемент, и когда рабочий процесс завершится, столбец должен содержать нужную ссылку.
Классический опыт
Для классического (устаревшего) вида может использоваться Рендеринг на стороне клиента .Это делает то же самое, что и форматирование столбцов в новом опыте.
Создайте текстовый столбец и назовите его, например, Log Change Request
.Следующим шагом является создание файла Javascript, загрузка его в SharePoint (где-нибудь) и регистрация этого javascript как JSLink в столбце.
1) Создайте файл Javascript и назовите его, например, log-change-request.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 SDK .Он скопирует некоторые библиотеки DLL, необходимые для подключения к SharePoint с помощью PowerShell.
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) Откройте набор документов, добавьте документ, и в столбце должна быть нужная ссылка.
Примечание:
Поскольку представление «Набор документов» используется только в классическом режиме, не имеет значения, что установлено в настройках (Новый или классический режим).