【发布时间】:2016-10-01 03:05:12
【问题描述】:
我正在使用 SharePoint 10 列表功能创建服务请求票务系统。我想在完成表单时对最终用户隐藏一些表单字段,但希望管理员查看所有表单字段。一个示例是隐藏“分配给:”表单字段表单最终用户。不知道该怎么做。提前谢谢你。
【问题讨论】:
标签: sharepoint-2010
我正在使用 SharePoint 10 列表功能创建服务请求票务系统。我想在完成表单时对最终用户隐藏一些表单字段,但希望管理员查看所有表单字段。一个示例是隐藏“分配给:”表单字段表单最终用户。不知道该怎么做。提前谢谢你。
【问题讨论】:
标签: sharepoint-2010
下载JQuery 和SPServices 库并将它们放置在只读文档库或您的14 Hive 中,以适合您的方式。然后编辑列表的 NewForm.aspx(使用 SP Designer)并添加对这两个文件的引用。
使用以下内容添加脚本标记:
$(document).ready(function() {
Admin_Group = "My Group Name";
if(IsGroupMember(Admin_Group))
{
$('input[title="Assigned To"]').parent().parent().css("display","none");
}
});
function IsGroupMember(GroupName)
{
var isGroupMember = false;
$().SPServices({
operation: "GetGroupCollectionFromUser",
userLoginName: $().SPServices.SPGetCurrentUser(),
async: false,
completefunc: function(xData, Status) {
if($(xData.responseXML).find("Group[Name='" + GroupName + "']").length == 1)
{
isGroupMember = true;
}
}
});
return isGroupMember;
}
您可能需要检查输入选择器是否正确访问了assignedto 或您需要隐藏的任何字段,但我在许多情况下都成功地使用了这种方法。确保您隐藏的字段不是必填字段。如果你需要的话,还记得在 EditForm.aspx 中隐藏它。
【讨论】:
您可以通过在 SharePoint 设计器或 InfoPath 中编辑视图/编辑表单来完成此操作,但您需要相当多的 XSLT 或 InfoPath 知识才能执行此类技巧。 对于 InfoPath,请参阅: http://blog.symprogress.com/2011/05/infopath-list-form-hidedisable-fields-based-on-sharepoint-group-membership/
或者,您可以使用 Visual Studio 为您需要的每个元素创建自定义 Web 部件。
或者您可以使用这样的产品,这是迄今为止最简单的方法: http://store.bamboosolutions.com/sharepoint-column-level-security.aspx
【讨论】:
我知道您可以创建列表视图,它们基本上是来自 MVC 模式的视图,可以表示列表的实例。在您的情况下,就像经理票列表视图和 TI 票列表视图一样。您应该在列表视图中搜索共享点。希望这会有所帮助。
【讨论】:
在我们正在构建帮助台系统的组织中,我不得不做同样的事情。用户只需要主题、描述、截止日期等几个字段,而服务台人员则拥有大量字段,包括备注、分配给等。
最简单的方法是为列表创建一个自定义的 NewForm.aspx。
您可以在 SharePoint 设计器中执行此操作,方法是复制现有的 NewForm.aspx,将自定义列表表单插入页面,将现有表单的 Visible 属性设置为 false,然后删除您不想要的信息行用户查看。
然后,只需将 NewForm_Trimmed.aspx 应用为默认的新表单,就可以了。
编辑:SharePoint Designer 2010 使此过程更容易...点击此链接: http://office.microsoft.com/en-us/sharepoint-designer-help/create-a-custom-list-form-using-sharepoint-designer-HA010378258.aspx
【讨论】:
我们使用Sharepoint Forms Designer 工具。它允许为不同的共享点组创建特定的表单。
【讨论】:
我的回答与 Paul 的类似,但结构略有不同。我们对列表表单有同样的要求,尽管在我们的例子中,我们基于组成员身份隐藏了某些元素。您需要执行以下操作:
$(document).ready(function() {
$().SPServices({
operation: “GetGroupCollectionFromUser”,
userLoginName: $().SPServices.SPGetCurrentUser(),
async: false,
completefunc: function(xData, Status) {
if ($(xData.responseXML).find(“Group[Name = ’Engineering’]”).length == 1) {
// alert(“You shouldnt see the button.”);
$(“input[id = ’AcctBtn’]”).hide();
}
}
});
});
在您的情况下,您实际上想要做相反的事情 - 默认情况下隐藏特定字段,然后在用户在组中时显示它们。只需为要修改的每个元素复制中间线(它隐藏输入字段的位置)。通过这种方式,您可以轻松地为给定 SharePoint 组中的用户显示或隐藏表单上的多个元素。
【讨论】: