1

フィールドの値に基づいて、編集フォームに特定のメタ データ フィールドを表示したいと考えています。

例: ユーザーはドキュメントを Doclib にアップロードして、そこのマネージャーによって承認されます。アイテムがマネージャーによって承認されるまで、メタデータの名前、ケース番号、場所を変更できます。アイテムが承認されたら、名前とケース番号を読み取り専用に設定したいと思います。

この要件を満たす最善の方法は何ですか?

承認された場合 = はい 名前とケースを設定 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' と !='Approved' と '0;#Approved' に変更してみました。私が間違っていることはありますか?

0;#Approved でスタックしているようです

4

2 に答える 2

1

これは、SharePoint Designer で簡単に解決できます。

  • リストのEditForm.aspxを変更する必要があります。
  • デフォルトのListFormWebPartを非表示にする(削除しないでください!)
  • カスタム編集項目フォームの挿入 (詳細... )

カスタム フォームは既定のフォームとまったく同じように見えますが、SharePoint Designer でカスタマイズできます。以下のコードは、デフォルトの WSS 問題リストに使用できます。Issue Status = Closedの場合、Issue タイトルは読み取り専用として表示されます。

<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 に答える