Campos condicionales de Sharepoint en Edit.aspx
sharepoint-2007 infopath (2)
Me gustaría mostrar ciertos campos de metadatos en el formulario de edición en función del valor de un campo.
Ejemplo: los usuarios cargan un documento en Doclib para que lo apruebe su administrador. Se les permite cambiar los metadatos Nombre, Caso No, Ubicación hasta que el elemento sea aprobado por el administrador. Una vez que se aprueba el elemento, me gustaría establecer el nombre y el número de caso para que sean de solo lectura.
¿Cuál es la mejor manera de cumplir este requisito?
Si se aprueba = sí, establezca Nombre y Caso No = Solo lectura No haga nada.
He intentado este método durante aproximadamente 5 horas. Creí que esto podría ser diferente para ModerationStatus. Puede 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 he intentado cambiarlo a! = ''0'' y! = ''Aprobado'' y ''0; # Aprobado''. ¿Hay algo que estoy haciendo mal?
Parece que está atascado en 0; #Approved
Siga los comentarios de Toni, pero para su campo _ModerationStatus use following función XSLT:
<xsl:when test="not(starts-with(@_ModerationStatus,''0''))">
Esto se puede resolver fácilmente con SharePoint Designer.
- Deberá modificar EditForm.aspx para su lista
- Ocultar el ListFormWebPart predeterminado (¡No lo elimine!)
- Insertar formulario de elemento de edición personalizado ( más detalles ... )
El formulario personalizado se verá exactamente igual que el predeterminado, pero podrá personalizarlo con SharePoint Designer. El código a continuación se puede usar para la lista predeterminada de Problemas de WSS. Mostrará el título de Issue como de solo lectura cuando el 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 corra 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:
- Crea una columna en tu biblioteca de documentos
- Cree una nueva en el Diseñador de SharePoint de flujo de trabajo.
Debería activarse cuando se cambie el artículo y copiar el valor del estado de aprobación a la columna recién creada.
Puede usar la columna personalizada para el formateo condicional.