Pergunta

Eu gostaria de exibir determinados campos de dados meta no formulário de edição com base no valor de um campo.

Exemplo: Os usuários fazer upload de um documento para a DocLib a ser aprovado pelo há gerente. Eles são autorizados a alterar os dados meta name, caso não, Local até que o item seja aprovada pelo gerente. Uma vez que o item é aprovado gostaria de definir Nome e Número do processo para somente leitura.

O que é a melhor maneira de atender a esse requisito?

Se aprovado = yes definir o nome e processo n = Somente leitura Outro não fazer nada.


Eu tentei este método para cerca de 5 horas. Eu acreditava que isso pode ser diferente para ModerationStatus. Pode exigir 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>

");

Eu posso fazê-lo funcionar com os outros campos, mas não ModerationStatus. Eu também tentei mudar para = '0' e = 'Aprovado' e! '0; #Approved'. Existe algo que eu estou fazendo errado?

Parece que a sua preso em 0; #Approved

Foi útil?

Solução

Isto pode ser facilmente resolvido com o SharePoint Designer.

  • Você precisará modificar EditForm.aspx para a sua lista
  • Esconder o padrão ListFormWebPart (não excluí-lo!)
  • Inserir formulário de item de edição personalizado ( mais detalhes ... )

forma personalizada será exatamente o mesmo que o padrão, mas você será capaz de personalizá-lo com o SharePoint Designer. O código a seguir pode ser usado para padrão lista de problemas WSS. Ela vai mostrar título Issue como somente leitura quando Problema Status = Fechado .

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

Você pode aplicar a mesma lógica para as suas listas ou / e requisitos personalizados.

Como de costume, você pode executar a alguns problemas adicionais. Eu não era capaz de obter o valor de @_ModerationStatus em Data View Web Part. Eu não sei a razão exata ...

Aqui está uma solução simples:

  1. Criar uma coluna na sua biblioteca de documentos
  2. Crie um novo fluxo de trabalho no SharePoint Designer.

Deve disparar quando o item é alterado e copiar o valor do status de aprovação para a coluna recém-criado.

Você pode usar a coluna personalizada para formatação condicional.

Outras dicas

Os comentários de Acompanhamento Toni, mas para o seu _ModerationStatus uso em campo seguinte função XSLT:

<xsl:when test="not(starts-with(@_ModerationStatus,'0'))">
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top