Question

Je voudrais afficher certains champs de méta-données sous la forme d'édition en fonction de la valeur d'un champs.

Exemple: Les utilisateurs téléchargent un document à la doclib être approuvé par là gestionnaire. Ils sont autorisés à changer le nom de méta-données, affaire n, emplacement jusqu'à ce que l'article est approuvé par le gestionnaire. Une fois que l'article est approuvé, je voudrais fixer Nom et numéro de dossier en lecture seule.

Quelle est la meilleure façon de répondre à cette exigence?

Si elle est approuvée = oui Set Nom et Cas n = Lecture seule Autre ne rien faire.


J'ai essayé cette méthode pendant environ 5 heures. Je croyais cela peut être différent pour ModerationStatus. Pourrions avoir besoin quelque chose de spécial

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>

");

Je peux obtenir de travailler avec les autres champs, mais pas ModerationStatus. J'ai aussi essayé de changer à = « 0 » et = « Approuvé » et! '0; #Approved. Y at-il quelque chose que je fais mal?

On dirait que son collée sur 0; #Approved

Était-ce utile?

La solution

Ceci peut être facilement résolu avec SharePoint Designer.

  • Vous devez modifier EditForm.aspx pour votre liste
  • Masquer la valeur par défaut ListFormWebPart (Ne pas supprimer!)
  • Insérer formulaire d'élément d'édition personnalisé ( plus de détails ... )

forme personnalisée sera exactement le même que celui par défaut, mais vous serez en mesure de le personnaliser avec SharePoint Designer. Le code ci-dessous peut être utilisé pour défaut WSS liste des questions. Il affichera le titre de l'émission en lecture seule lorsque Problème Statut = Fermé .

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

Vous pouvez appliquer la même logique pour vos listes personnalisées ou / et les exigences.

Comme d'habitude, vous pourriez rencontrer quelques problèmes supplémentaires. Je n'étais pas en mesure d'obtenir la valeur de @_ModerationStatus dans WebPart Affichage de données. Je ne sais pas la raison exacte ...

Voici une solution simple:

  1. Créer une colonne dans votre bibliothèque de documents
  2. Créer un nouveau flux de travail dans SharePoint Designer.

Il devrait tirer quand l'élément est modifié et copier la valeur de l'état d'approbation à la colonne nouvellement créée.

Vous pouvez utiliser la colonne personnalisée pour la mise en forme conditionnelle.

Autres conseils

Suivez les commentaires de Toni, mais pour votre _ModerationStatus utilisation sur le terrain suivant la fonction XSLT:

<xsl:when test="not(starts-with(@_ModerationStatus,'0'))">
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top