65.9K
CodeProject 正在变化。 阅读更多。
Home

SharePoint 2013:在列表项选择时隐藏/显示删除图标

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2017年3月16日

CPOL

2分钟阅读

viewsIcon

14180

SharePoint 2013:在列表项选择时隐藏/显示 Ribbon 中的删除图标

引言

在本文中,我将探讨如何使用 CSOM/REST API 和 jQuery,根据登录用户来处理列表项选择中的删除图标(隐藏/显示)。

场景

场景是禁用列表项选择时 Ribbon 中的删除图标。但是,当任何用户登录到 SharePoint 站点时,他创建的项在仅选中一个项时应该具有删除选项。可以使用删除权限被移除的自定义权限级别以及项目级别或文件夹级别的权限来实现这一点,但这可能会导致您在管理权限中断继承方面遇到很多问题。或者,您可以编写一个事件处理程序来防止删除该项,但最好的方法是使用 jQuery/ CSOM/ REST。

我提供了一个代码演示,展示了如何在列表项选择时**隐藏 Ribbon 中的删除图标**。

以前

Hide delete icon

解决方案

以下是步骤:

步骤 1

导航到您的 SharePoint 2013 站点。

第二步

从该页面,选择“网站操作”|“编辑页面”。

编辑页面,转到 Ribbon 中的“**插入**”选项卡,然后单击“**Web 部件**”选项。在“Web 部件”选择器区域中,转到“**媒体和内容**”类别,选择“**脚本编辑器**”Web 部件,然后按“**添加按钮**”。

步骤 3

一旦 Web 部件插入到页面中,您将看到一个“**编辑代码片段**”链接;单击它。您可以插入 HTML 和/或 JavaScript,如下所示

EDIT SNIPPET

	// JavaScript source code  
	< scripttype = "text/javascript"  
	    src = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.min.js" >   
	< /script>   
	< scripttype = "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(); //Delete Icon Hyper link  
	    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();  //Delete Icon Hyper link  
	    }  
	    else  
	    {  
	        $('a[id*="Ribbon.ListItem.Manage.Delete-Medium"]').hide();  
	    }  
	}  
	functionCheckCreatedAuthor(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 删除图标

    list item

  • 在选择多个列表项的情况下,隐藏列表中的 Ribbon 删除图标

    New item

  • 在选择单个列表项(已登录)的情况下,显示列表中的 Ribbon 删除图标。

    delete item

摘要

我尝试了在列表项选择时隐藏/显示 Ribbon 中的删除图标,这将为您在应用程序中的用户交互提供更大的灵活性。我使用 CSOM/REST API 和 jQuery 在 SharePoint 2013 中实现了这一点。我希望本文对您有所帮助,并且如果您有任何疑问,请随时回复。

© . All rights reserved.