如何限制SharePoint WSS3用户仅编辑其专用视图中的字段

如何限制SharePoint WSS3用户仅编辑其专用视图中的字段,sharepoint,views,Sharepoint,Views,我有一个包含以下字段的列表:标题、客户、项目、描述 有一个供分析师使用的视图,其中字段可见:标题、项目、说明 只要分析员处理他们的观点,而不是列表,一切都很好。但是,当他们需要修改记录时,单击Edit,他们可以看到并能够修改“Client”字段 如何防止“客户端”字段可供组编辑?WSS中是否有方法或我需要查找第三方列表组件?所有字段都有一组属性,这些属性决定了它们在表单中的可见性,例如“ShowInNewForm”、“ShowInEdit Form”和“ShowInPlayForm”。还有一些用

我有一个包含以下字段的列表:标题、客户、项目、描述

有一个供分析师使用的视图,其中字段可见:标题、项目、说明

只要分析员处理他们的观点,而不是列表,一切都很好。但是,当他们需要修改记录时,单击Edit,他们可以看到并能够修改“Client”字段


如何防止“客户端”字段可供组编辑?WSS中是否有方法或我需要查找第三方列表组件?

所有字段都有一组属性,这些属性决定了它们在表单中的可见性,例如“ShowInNewForm”、“ShowInEdit Form”和“ShowInPlayForm”。还有一些用于文件对话框、列表设置页面和其他一些地方,但已经过去了。简短回答,是的,您可以使用WSS使字段不显示在编辑表单中,而不需要任何第三方组件

如果您需要一个任何人都无法在编辑表单中看到的字段(也就是说,任何人都不能在其表单中看到该字段),则需要将“ShowInEditForm”修改为true。这不能通过SharePoint UI直接修改,但使用对象模型非常简单

如果您需要某些人在某个时候通过SharePoint UI对其进行编辑,那么您将不得不创建一个自定义编辑表单。这有点复杂,所以我将暂缓提供该指令,除非您声明需要沿着这条路线走(或者其他人经过这个答案并请求它)。然而,WSS 3.0完全可以实现这一点

编辑

如果您已经知道如何将内联C#代码插入到ASPX页面中,那么可以使用SharePoint Designer非常简单地执行此操作。首先,按照中的说明操作,特别是确保不删除默认列表表单web部件。现在,在您添加的自定义列表表单中,使其包含任何人都可以编辑的每个字段。最后一步是让表单为某些人隐藏这些字段。让我们将其默认为Visible=false,如果用户允许,则翻转此开关。您可以通过检查当前用户是否是指定组的一部分,或者检查该用户是否具有仅由这些组的人员持有的特定权限级别来执行此操作。您将基本上编写如下代码,我将使用检查指定组作为示例

using (SPWeb web = this.Web)
{
    SPUser currUser = web.CurrentUser;
    string[] listOfGroups = { "Group1Name", "Group2Name", "Group3Name" };
    foreach (string groupName in listOfGroups)
    { 
        if (currUser.Groups.Contains(groupName))
        {
    //Repeat this for each Control, refer to them by their ID. For example, this is for a control with the ID txtTitle.
            txtTitle.Visible = true;
        }
    }
}

如果您不知道内联代码,则必须编写一个带有代码隐藏的自定义ASPX页面。将EditForm.aspx复制到一个新文件中-您应该在按照本文设置自定义列表表单后执行此操作。您也可以从头开始构建新的ASPX页面,但请确保包含SharePoint页面所需的所有内容占位符。现在,该页面当前继承自Microsoft.SharePoint.WebPartPages.WebPartPage。我们需要创建从该类继承的自定义代码,并将页面改为继承新的自定义代码。在自定义代码中,重写OnLoad或OnInit方法之一,并在其中包含用户权限检查,如前面所述。编译代码,将其部署到您的SharePoint服务器,它应该可以正常工作。

如果要设置隐藏字段或在新表单中显示字段,或编辑列表的表单页面

转到列表设置。 在高级设置中,启用“允许管理内容类型”

这样,您将在列表设置页面上获得一个列表名链接。 打开链接并使用“添加或删除”选项选择要隐藏或隐藏的字段

保存后,再次禁用高级设置中的“允许管理内容类型”


就这样:)

您好,谢谢您的详细回复。我的情况更接近你在回复的最后描述的情况。我需要允许某些用户组仅编辑其字段,并防止其他用户组编辑或(如果更容易)查看其他字段。“ShowIn…”属性将不会有帮助,因为将应用于所有组。如果你能给我指点一下,我将不胜感激。干杯,VHi Umang,谢谢你的回复。您的方式将对所有人完全隐藏该字段,因此不允许任何用户编辑该字段。我的任务是只为一些用户隐藏一个字段,比如说从“读者”那里,但是“贡献者”可以查看和编辑该字段。谢谢,瓦尔