Edit.aspx中的Sharepoint条件字段

时间:2008-12-11 17:36:53

标签: sharepoint sharepoint-2007 infopath sharepoint-designer

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

示例:用户将文档上传到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

2 个答案:

答案 0 :(得分:1)

使用SharePoint Designer可以轻松解决此问题。

  • 您需要为列表修改 EditForm.aspx
  • 隐藏默认 ListFormWebPart (不要删除它!)
  • 插入自定义修改项目表单(more details...

自定义表单与默认表单完全相同,但您可以使用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. 在文档库中创建列
  2. 在工作流SharePoint Designer中创建新的。
  3. 更改项目时应触发,并将审批状态的值复制到新创建的列。

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

答案 1 :(得分:0)

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

<xsl:when test="not(starts-with(@_ModerationStatus,'0'))">