禁用SharePoint列表项删除图标的解决方案

SharePoint2013中,经常需要对用户界面进行定制以满足特定的业务需求。一个常见的需求是控制用户对列表项的删除权限。例如,可能希望在用户选择列表项时禁用删除图标,但当用户登录到SharePoint站点并选择他们自己创建的列表项时,如果只选择了一个,他们应该能够看到删除选项。这可以通过自定义权限级别来实现,删除权限被移除,并且使用项目级别或文件夹级别的权限,但这可能会导致权限继承管理上的问题。另一种方法是编写事件处理程序来防止删除该项,但最佳实践是使用jQuery/CSOM/REST API来实现。

解决方案步骤

以下是实现上述需求的步骤:

首先,访问SharePoint2013网站。

从该页面,选择“站点操作”|“编辑页面”。编辑页面后,转到Ribbon上的“插入”选项卡,点击“Web部件”。在“Web部件”选择器区域,转到“媒体和内容”类别,选择“脚本编辑器”Web部件并按下“添加”按钮。

一旦Web部件被插入到页面中,会看到一个“编辑代码片段”链接;点击它。可以插入以下HTML和/或JavaScript代码:

<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.min.js"></script> <script type="text/javascript"> $(document).ready(function() { ExecuteOrDelayUntilScriptLoaded(init_HideButton, "sp.ribbon.js"); }); function init_HideButton() { setInterval(function() { HideDeleteIconRibbomButton(); }, 1000); } function HideDeleteIconRibbomButton() { $('a[id*="Ribbon.ListItem.Manage.Delete-Medium"]').hide(); var cc = new SP.ClientContext.get_current(); var web = cc.get_web(); var listId = SP.ListOperation.Selection.getSelectedList(); var selectedItems = SP.ListOperation.Selection.getSelectedItems(); if (selectedItems.length == 1) { var flag = CheckCreatedAuthor(listId, selectedItems[0].id, _spPageContextInfo.userId); if (flag) { $('a[id*="Ribbon.ListItem.Manage.Delete-Medium"]').show(); } } else { $('a[id*="Ribbon.ListItem.Manage.Delete-Medium"]').hide(); } } function CheckCreatedAuthor(ListId, ItemID, AuthorID) { var result = false; var url = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbyid('" + ListId + "')/items?$filter=((ID eq '" + ItemID + "') and (ApprovalStatus eq 'Draft') and (Author/ID eq '" + AuthorID + "')"; getListItems(url, function(data) { var items = data.d.results; if (items.length > 0) { result = true; } else { result = false; } }, function(data) { result = false; }); return result; } function getListItems(siteurl, success, failure) { $.ajax({ async: false, url: siteurl, method: "GET", headers: { "Accept": "application/json; odata=verbose" }, success: function(data) { success(data); }, error: function(data) { failure(data); } }); } </script>

在没有任何列表项选择的情况下隐藏Ribbon上的删除图标:

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485