質問

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

例:ユーザーはドキュメントを 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;#承認済みで止まっているようです

役に立ちましたか?

解決

これは SharePoint Designer を使用すると簡単に解決できます。

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

カスタム フォームは既定のフォームとまったく同じに見えますが、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>

同じロジックをカスタム リストや要件に適用できます。

いつものように、追加の問題が発生する可能性があります。データ ビュー Web パーツで @_ModerationStatus の値を取得できませんでした。正確な理由は分かりません...

簡単な回避策は次のとおりです。

  1. ドキュメント ライブラリに列を作成する
  2. ワークフロー SharePoint Designer で新規作成します。

アイテムが変更されたときに起動し、承認ステータスの値を新しく作成された列にコピーする必要があります。

カスタム列を条件付き書式設定に使用できます。

他のヒント

XSLT機能以下が、あなたのの_ModerationStatus のフィールドでの使用のためにトニのコメントに従ってください:

<xsl:when test="not(starts-with(@_ModerationStatus,'0'))">
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top