我想根据字段的值在编辑表单中显示某些元数据字段。
示例:用户将文档上传到Doclib以获得经理批准。他们可以更改元数据名称,案例号,位置,直到该项目得到经理的批准。一旦项目获得批准,我想将名称和案例编号设置为只读。
满足此要求的最佳方式是什么?
如果批准=是 set Name and Case No =只读 其他 什么都不做。
我尝试过这种方法约5个小时。我认为这可能与ModerationStatus不同。可能需要特别的东西
print("<xsl:choose>
<xsl:when test="@_ModerationStatus != '0;#approved'">
<SharePoint:FormField runat="server" id="ff12{$Pos}" ControlMode="Edit" FieldName="Test_x0020_Session" __designer:bind="{ddwrt:DataBind('u',concat('ff12',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Test_x0020_Session')}"/>
<SharePoint:FieldDescription runat="server" id="ff12description{$Pos}" FieldName="Test_x0020_Session" ControlMode="Edit"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@Test_x0020_Session"></xsl:value-of>
</xsl:otherwise>
“);
我可以让它与其他字段一起使用,但不能使用ModerationStatus。我也尝试将其更改为!='0'和!='已批准'和'0; #Approved'。有什么我做错了吗?
似乎卡在0上; #Approved
答案 0 :(得分:1)
使用SharePoint Designer可以轻松解决此问题。
自定义表单与默认表单完全相同,但您可以使用SharePoint Designer对其进行自定义。以下代码可用于默认WSS问题列表。当问题状态=已关闭时,它会将问题标题显示为只读。
<xsl:choose>
<xsl:when test="@Status != 'Closed'">
<SharePoint:FormField runat="server" id="ff1{$Pos}" ControlMode="Edit" FieldName="Title" __designer:bind="{ddwrt:DataBind('u',concat('ff1',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Title')}"/>
<SharePoint:FieldDescription runat="server" id="ff1description{$Pos}" FieldName="Title" ControlMode="Edit"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@Title"></xsl:value-of>
</xsl:otherwise>
</xsl:choose>
您可以为自定义列表或/和要求应用相同的逻辑。
像往常一样,您可能会遇到一些其他问题。我无法在Data View Web部件中获得@_ModerationStatus的值。我不知道具体原因......
这是一个简单的解决方法:
更改项目时应触发,并将审批状态的值复制到新创建的列。
您可以使用自定义列进行条件格式化。
答案 1 :(得分:0)
关注Toni的评论,但对于 _ModerationStatus 字段,请使用以下XSLT函数:
<xsl:when test="not(starts-with(@_ModerationStatus,'0'))">