Pregunta

Me gustaría mostrar ciertos campos de metadatos en el formulario de edición según el valor de un campo.

Ejemplo:Los usuarios cargan un documento en Doclib para que su administrador lo apruebe.Se les permite cambiar los metadatos Nombre, Número de caso y Ubicación hasta que el administrador apruebe el elemento.Una vez que se apruebe el artículo, me gustaría configurar Nombre y Número de caso en solo lectura.

¿Cuál es la mejor manera de cumplir con este requisito?

Si se aprueba = sí, establece el nombre y el caso no = lea solo más no hacer nada.


Probé este método durante aproximadamente 5 horas.Creí que esto podría ser diferente para ModerationStatus.Podría requerir algo especial

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>

");

Puedo hacer que funcione con los otros campos pero no con ModerationStatus.También intenté cambiarlo a !='0' y !='Approved' y '0;#Approved'.¿Hay algo que estoy haciendo mal?

Parece que está atascado en 0;#Aprobado

¿Fue útil?

Solución

Esto se puede solucionar fácilmente con SharePoint Designer.

  • Necesitarás modificar Editar formulario.aspx para tu lista
  • Ocultar el valor predeterminado ListFormWebPart (¡No lo borres!)
  • Insertar formulario de elemento de edición personalizado (más detalles...)

El formulario personalizado tendrá exactamente el mismo aspecto que el predeterminado, pero podrá personalizarlo con SharePoint Designer.El siguiente código se puede utilizar para la lista predeterminada de problemas de WSS.Mostrará el título del problema como de solo lectura cuando Estado del problema = Cerrado.

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

Puede aplicar la misma lógica para sus listas personalizadas y/o requisitos.

Como de costumbre, es posible que tenga algunos problemas adicionales.No pude obtener el valor de @_ModerationStatus en el elemento web Vista de datos.No sé la razón exacta...

Aquí hay una solución simple:

  1. Cree una columna en su biblioteca de documentos
  2. Cree un nuevo diseñador de SharePoint en el flujo de trabajo.

Debería activarse cuando se cambia el elemento y copiar el valor del estado de aprobación en la columna recién creada.

Puede utilizar la columna personalizada para formato condicional.

Otros consejos

Siga los comentarios de Toni, pero para su _ModerationStatus uso en el campo siguiente función XSLT:

<xsl:when test="not(starts-with(@_ModerationStatus,'0'))">
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top