1

我想根据字段的值在编辑表单中显示某些元数据字段。

示例:用户将文档上传到 Doclib 以由那里的经理批准。他们可以更改元数据名称、案例编号、位置,直到项目得到经理的批准。一旦项目获得批准,我想将名称和案例编号设置为只读。

满足此要求的最佳方法是什么?

如果批准 = 是,则设置名称和案例编号 = 只读 否则什么也不做。


我已经尝试了这种方法大约 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' 和 !='Approved' 和 '0;#Approved'。有什么我做错了吗?

似乎它停留在 0;#Approved

4

2 回答 2

1

这可以通过 SharePoint Designer 轻松解决。

  • 您将需要为您的列表修改EditForm.aspx
  • 隐藏默认的ListFormWebPart(不要删除它!)
  • 插入自定义编辑项表单(更多详细信息...

自定义表单看起来与默认表单完全相同,但您可以使用 SharePoint Designer 对其进行自定义。下面的代码可用于默认 WSS 问题列表。当Issue Status = Closed时,它会将问题标题显示为只读。

<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>

您可以为您的自定义列表或/和要求应用相同的逻辑。

像往常一样,您可能会遇到一些其他问题。我无法在数据视图 Web 部件中获取 @_ModerationStatus 的值。我不知道确切的原因...

这是一个简单的解决方法:

  1. 在您的文档库中创建一个列
  2. 在工作流 SharePoint Designer 中新建一个。

它应该在项目更改时触发并将批准状态的值复制到新创建的列。

您可以使用自定义列进行条件格式设置。

于 2008-12-14T20:14:58.457 回答
0

遵循 Toni 的评论,但对于您的_ModerationStatus字段,请使用以下 XSLT 函数:

<xsl:when test="not(starts-with(@_ModerationStatus,'0'))">
于 2008-12-18T13:05:09.913 回答