Domanda

Vorrei visualizzare determinati campi di metadati nel modulo di modifica in base al valore di un campo.

Esempio:Gli utenti caricano un documento su Doclib per essere approvato dal gestore.Possono modificare i metadati Nome, Numero caso, Posizione finché l'elemento non viene approvato dal manager.Una volta approvato l'articolo, vorrei impostare Nome e Numero caso su sola lettura.

Qual è il modo migliore per soddisfare questo requisito?

Se approvato = sì set Nome e caso No = Sola lettura Altro Non fare nulla.


Ho provato questo metodo per circa 5 ore.Credevo che questo potesse essere diverso per ModerationStatus.Potrebbe richiedere qualcosa di speciale

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>

");

Posso farlo funzionare con gli altri campi ma non con ModerationStatus.Ho anche provato a cambiarlo in !='0' e !='Approvato' e '0;#Approvato'.C'è qualcosa che sto facendo di sbagliato?

Sembra che sia bloccato su 0;#Approvato

È stato utile?

Soluzione

Questo può essere facilmente risolto con SharePoint Designer.

  • Dovrai modificare ModificaForm.aspx per la tua lista
  • Nascondi l'impostazione predefinita ListFormWebPart (Non cancellarlo!)
  • Inserisci il modulo dell'elemento di modifica personalizzato (più dettagli...)

Il modulo personalizzato avrà esattamente lo stesso aspetto di quello predefinito, ma potrai personalizzarlo con SharePoint Designer.Il codice seguente può essere utilizzato per l'elenco dei problemi WSS predefiniti.Mostrerà il titolo del problema come di sola lettura quando Stato del problema = Chiuso.

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

Puoi applicare la stessa logica per i tuoi elenchi e/o requisiti personalizzati.

Come al solito, potresti riscontrare alcuni problemi aggiuntivi.Non sono riuscito a ottenere il valore di @_ModerationStatus nella web part Visualizzazione dati.Non so il motivo esatto...

Ecco una soluzione semplice:

  1. Crea una colonna nella tua raccolta documenti
  2. Creare un nuovo SharePoint Designer nel flusso di lavoro.

Dovrebbe attivarsi quando l'elemento viene modificato e copiare il valore dello stato di approvazione nella colonna appena creata.

Puoi utilizzare la colonna personalizzata per la formattazione condizionale.

Altri suggerimenti

Segui i commenti di Toni, ma per il _ModerationStatus uso sul campo seguente funzione XSLT:

<xsl:when test="not(starts-with(@_ModerationStatus,'0'))">
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top