基于列隐藏/禁用编辑按钮's在Sharepoint 2010中的价值

Hide/Disable Edit button based on column's Values in Sharepoint 2010

本文关键字:Sharepoint 2010 隐藏 于列 按钮 编辑按 编辑      更新时间:2023-09-26

我有一个列,它有两个类别,Done和Pending。一旦用户选择了一个项目,并且该项目的"状态"列为"挂起",我希望隐藏/禁用编辑按钮。

我想知道如何做到这一点,无论是在visual studio 2010还是ECMA脚本中。

我知道这个问题很老了,但如果有人还需要答案:在visual studio中创建自定义动作,如下所示:https://msdn.microsoft.com/en-us/library/office/ff408060(v=office.14).aspx

这隐藏了你想要的按钮,现在你可以通过enabledscript参数设置一个条件来选择按钮应该隐藏的情况:

只需在</CommandUIDefinitions> 之后添加此代码

<CommandUIHandlers>
        <CommandUIHandler
        Command="HideEditRibbon"
        CommandAction="javascript:return true;" EnabledScript="javascript:checkIfNeedsToBeHidden();" />
</CommandUIHandlers>
<CustomAction Id="yourJsReference" Location="ScriptLink" ScriptSrc="yourJsFile.js"></CustomAction>

如果你在List Ribbon、Edit和DisplayForm中需要这个,你需要进行3个自定义操作,并更改Location Part,也许还有你的js代码。

如果您想使用开箱即用的编辑表单,那么您不会使用服务器端代码;你需要一个完全自定义的编辑表单才能做到这一点。

这意味着在编辑页面上使用Javascript,这是脆弱的,并且不会阻止用户在知道自己在做什么的情况下保存数据。

每个列的输入字段都将具有一个带列名的"title"属性。JQuery可以很容易地找到title="列名"的元素,因此您可以知道是否需要隐藏保存按钮。保存按钮不太容易找到。你可以尝试用type=button和value=save来获取输入。

如果有实际的安全性很重要,这样无论发生什么情况,都无法在这种状态下编辑项目,那么您可以在ItemUpdating事件上使用事件接收器。只需检查项目的属性并使用这些属性。Cancel=true;(或类似的东西),这样即使他们禁用了你的JavaScript并保存了事件,它也不会被保存。如果您需要帮助添加事件接收器或使其正常工作,只需询问即可。

编辑:在你的评论中,你说你只是想在某些条件下完全阻止访问编辑表单。为此,我会制作一个新的Web部件/用户控件,并将其添加到编辑页面。在该部分中,您可以获取适当的项(项的ID将是一个查询参数),并查看页面是否应该是"可查看的"。如果没有,则可以重定向到另一个页面。

对上述内容的另一个补充是尝试编辑列表视图,使得某些项目没有编辑链接。这将非常困难,我甚至怀疑(实际上)使用开箱即用的Web部件是否可能。您需要有一个完全自定义的列表视图页面,才能控制哪些项目具有指向编辑页面的链接。(其他人可以在这里纠正我。)