• SharePoint 如何根据用户权限在NewForm页面允许用户编辑某字段或者只读某字段


    摘要:

          最近遇到一个用户希望实现如下功能,如果用户属于所有者组,则在某个列表的新建和编辑画面里可以编辑某些字段,如果用户不属于所有者组则只允许只读这些字段。用户使用Shared Hosting Environment,只能通过客户端进行开发。

    方案:

          首先我们假设您已经知道如何通过Designer修改NewForm.aspx以及EditForm.aspx画面,隐藏掉默认的列表项编辑Web Part,并添加新的列表项编辑Web Part,了解如何在添加的Web Part里操控字段。

          这些您都完成后我们仅仅以默认的Title字段为例,只需要调用<xsl:if test="ddwrt:IfHasRights(33554432)">即可判断用户的身份以判断是否显示该字段,IfHasRights里给出的参数叫做PermissionMark,我们随后会给出所有的参考值。

    <xsl:if test="ddwrt:IfHasRights(33554432)">
        <td width="75%" class="ms-vb">
            <SharePoint:FormField runat="server" id="ff1{$Pos}" ControlMode="New" FieldName="Title" __designer:bind="{ddwrt:DataBind('i',concat('ff1',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Title')}" />
            <SharePoint:FieldDescription runat="server" id="ff1description{$Pos}" FieldName="Title" ControlMode="Edit" />
        </td>
    </xsl:if>
    

         

    以上只提到了核心的内容,还有些琐碎的工作还需要做:

    1. XSL里面怎么书写Else语句(应该是使用<xsl:choose>)

    2. 不属于所有者组的时候显示该字段值(应该是使用<xsl:value-of select="$Title">)

    还有些有意思的事情可以调查:

    1. 如何从JavaScript里面将变量传给XSL的变量(如此我们还可以考虑比较复杂的方案,譬如通过WebService返回用户所属的组信息后再进行判断)

    以下是所有可以使用的PermissionMask:

    ViewListItems - 1

    AddListItems - 2

    EditListItems - 4

    DeleteListItems - 8

    ApproveItems - 16

    OpenItems - 32

    ViewVersions - 64

    DeleteVersions - 128

    CancelCheckout - 256

    PersonalViews - 512

    ManageLists - 2048

    ViewFormPages - 4096

    Open - 65536

    ViewPages - 131072

    AddAndCustomizePages - 262144

    ApplyThemeAndBorder - 524288

    ApplyStyleSheets - 1048576

    ViewUsageData - 2097152

    CreateSSCSite - 4194314

    ManageSubwebs - 8388608

    CreateGroups - 16777216

    ManagePermissions - 33554432

    BrowseDirectories - 67108864

    BrowseUserInfo - 134217728

    AddDelPrivateWebParts - 268435456

    UpdatePersonalWebParts - 536870912

    ManageWeb - 1073741824

    UseRemoteAPIs - 137438953472

    ManageAlerts - 274877906944

    CreateAlerts - 549755813888

    EditMyUserInfo - 1099511627776

    EnumeratePermissions - 4611686018427387904

    FullMask - 9223372036854775807

  • 相关阅读:
    C# DataGridView的初始化
    DataGridView固定了列名,怎样将数据内容绑定在列上
    struts2 中的 addActionError 、addFieldError、addActionMessage方法的区别添加错误信息
    <s:iterator>标签迭代数据不显示
    org.hibernate.hql.ast.QuerySyntaxException: tb_voteoption is not mapped [from tb_voteoption where voteID=?]
    struts2导入多个xml引入报错<include>
    没有找到<context:component-scan base-package="">标签
    hibernate.hbm.xml配置文件解析
    Struts2 中#、@、%和$符号的用途
    Some projects cannot be imported because they already exist in the workspace
  • 原文地址:https://www.cnblogs.com/johnsonwong/p/2072315.html
Copyright © 2020-2023  润新知