Soluções sem código: exibindo os dias desde a última alteração um item de lista do SharePoint

Soluções sem código: exibindo os dias desde a última alteração um item de lista do SharePoint

Importante :  Este artigo foi traduzido por um sistema de tradução automática, leia o aviso de isenção de responsabilidade. Para sua referência, veja a versão em inglês deste artigo aqui.

20/9/2011 3:01 PM

por Justin Joyce, LANtek

Observação : Este artigo faz parte de uma coleção de postagens de quatro anos do blog obter o ponto para usuários finais do SharePoint.

Visão geral: Personalizar duração relatórios com nenhum código

Uma das muitas vezes solicitadas funcionais partes de um site do SharePoint é um relatório de duração de tarefas ou itens de lista. Em outras palavras, quantos dias/meses tenha sido desde a última modificação este item de lista?

Na superfície parece ser uma solicitação de muito simple. Afinal, temos datas para itens sendo criados e modificados, temos a capacidade para armazenar datas personalizadas quando determinadas alterações aos itens ocorram por meio de receptores de eventos. Podemos ter calculado colunas onde estamos pode incluir fórmulas semelhante do Excel para trabalhar com nossas informações. Isso parece uma proposta bastante direta. Escolher um campo de data, criar uma coluna calculada e siga uma fórmula algo de [DateField] – [Hoje]. Ah, não tão rápido apesar! Como qualquer pessoa que tentou essa tarefa "simples" sabe, tentando utilizar algo como [Hoje] em uma coluna calculada causa problemas. Tente inserir [Hoje] em sua calculado caixa fórmula da coluna lhe dará uma mensagem de erro semelhante a esta:

Mensagem de erro

Por que isso? Bem, ela tem a ver com a maneira calculado colunas são calculados.

Vamos dar uma fórmula simples como exemplo:

= IF ( [Column1] < = [Column2], "Okey", "Não Okey")

Tudo isso informa que se Column1 é menor ou igual a Column2, exiba Okey, caso contrário, exibe não Okey. Esta é uma fórmula básica bastante comum para uma coluna calculada e faz uma suposição básica sobre o item de lista que contém essas colunas: os valores para Column1 e Column2 nunca será capazes de alterar sem um evento de atualização no item de lista.

Certo, colunas calculadas serão recalcular somente quando a lista é atualizada (ou criada) desde que eles presumem as informações que você está calculando estão contidas no próprio item. Isso cria um problema quando você está tentando usar algo que muda independentemente de campos do item, como a data de hoje.

Agora, eu não estava na reunião onde eles decidiram que essa é a maneira que calculada colunas funcionariam, no entanto, se eu tinha que fazer uma estimativa razoável que eu assumirá que eles funcionem dessa forma para um desempenho. Imagine se você tivesse uma lista de vários milhares de itens, cada um deles contido uma coluna calculada que necessária uma atualização de "ao vivo". Isso significa que algum mecanismo, talvez um trabalho de timer, teria percorrer cada item que contidas nessa coluna calculada com frequência e atualizar seu valor. Isso pode ser muito sobrecarregar em termos de desempenho porque com implantações maiores este trabalho poderia constantemente ser executando e alterando as coisas. Isso é apenas Minha suposição, mas facilita um pouco sentido se você pensar sobre ele.

Há algumas sugestões para soluções semelhantes flutuante ao redor por aí que envolvem enganando SharePoint na aceitar um valor de hoje primeiro criar uma coluna chamada hoje, e em seguida, adicioná-lo à sua fórmula, em seguida, excluí-lo. Esses são muito boas, mas lembre-se de que eu disse sobre quando colunas calculadas são atualizadas. Este valor só serão alteradas quando o item é atualizado que significa que os valores assim será incorretos, especialmente no caso de um cálculo de dia.

Vi que outras pessoas usando JavaScript inteligente para gravar os valores para a página. Isso também funcionaria, mas eu sou praticamente puderem contra script de cliente quando ele pode evitar.

Implementação:

Então o que fazer? Colunas calculadas são fora a pergunta para funções então chamadas de "voláteis" como hoje. É possível que estamos desenvolva alguns códigos personalizados para cuidam isso para nós como uma coluna calculada, o trabalho de timer, ou agendada processo venha e atualizar cada item único que precisa ser este cálculo feito. Isso nos traz voltar para o problema de desempenho mencionado no último parágrafo apesar e Além disso é uma solução frágil que seria altamente específica para a site/lista/coluna em questão. Sobre essas duas questões, também você teria que encontrar um nerdy cara, como sozinho, que sabe como código e persuadi-lo para desenvolver esta solução para você. Mas não há uma maneira mais fácil!

Se você tiver direitos para criar campos e editar páginas em seu site e um pouco de Conhecimento sobre XSLT e criar modos de exibição, você pode colocar em conjunto um modelo XSL que pode ser incluído em um modo de exibição de lista e fielmente calculará o valor de cada vez que a página for solicitada. Este cenário remove nossa preocupações sobre o desempenho e não requer o código personalizado para ser desenvolvidos e implantados por meio de uma solução.

Perfeito. Então, como fazemos-lo?

  1. Crie ou selecione o campo que irá atuar como nossa fonte. Ele deve ser um tipo de data.

  2. Crie nosso campo que irá atuar como um espaço reservado para o valor sendo calculado.

  3. Adicionar ambas desses campos a um tipo de conteúdo e adicionar esse tipo de conteúdo a uma lista.

  4. Crie um modo de exibição de lista que contém colunas de origem e de espaço reservado.

  5. Carregar o modelo XSL para a biblioteca de estilos.

  6. Defina a propriedade de "Link XSL" para a Web Part de exibição de lista por meio da UI.

  7. Êxito!

Vamos explorar um caso de uso de exemplo e percorrer a implementação. Nossos clientes queriam um modo de exibição de sua lista de principal que pedir que elas quanto tempo um item de lista específica tinha sido sentada seu status. Esta lista continha um conteúdo tipo derivado de tipo de Item e adicionado à lista de site personalizado. Já havia um receptor de eventos no local que captura sempre que esse campo de status no item de lista foi alterado e salva essa data para uma coluna chamada "Data de Status alterado". Todos os essa fiação não é necessária e pode ser feita com qualquer campo de data (isso acontece isso é nossa implementação mas à vontade experimentar). O mínimo que será necessário é seu campo de data de origem e o campo de espaço reservado para armazenar seu cálculo (mais no próximo parágrafo) adicionados à sua lista, embora sugiro que você usa colunas de site e tipos de conteúdo de site caso você quiser reutilizar essa solução em outros locais no seu site.

Portanto, temos nossa data de origem que podemos usar em nosso cálculo em relação a data de hoje. Agora, podemos criar uma coluna de site personalizado para usar como um contêiner de nosso valor calculado. Nesse caso, eu escolhi usar uma coluna calculada, desde que ele não poderão ser alteradas no novo ou editar formulários de item, mas pode ser selecionado para exibição em modos de exibição, desde que não queremos usuários inserindo valores aleatório nesta coluna. É possível confuso sobre por que ele não está sendo exibido de modos de exibição, etc.

Agora que temos nossa coluna de site, podemos adicioná-lo a nossos tipos de conteúdo que serão usados em nossa lista. Em seguida, precisamos criar nosso modo de exibição que posteriormente será personalizado com nosso XSLT. Certifique-se de que você cria um modo de exibição padrão que contém sua coluna de data de origem e sua nova coluna calculada que irá atuar como um espaço reservado para o valor calculado.

Agora temos tudo o que precisaremos para dar suporte a nosso relatório de duração personalizados. Tudo o que resta está criando nosso modelo XSL, carregá-la biblioteca de estilos do site e vinculá-la ao nosso modo de exibição de lista. O modelo XSL que usaremos irá conter algumas marcações gerados pelo SharePoint normal para gerar o modo de exibição bem como nossa própria marcação personalizada usado para substituir certas partes deste e calcular nosso valor desejado para nós.

Dar crédito onde vence crédito, as modelos XSL para fazer cálculos reais eu uso para esta solução foram generosamente fornecidos pela "swirch" nos fóruns do MSDN:
http://social.msdn.microsoft.com/Forums/en-US/sharepointcustomization/thread/aeda905b-9bc6-40c4-bd22-21306c5cb0d2/

Baixe a folha de estilo XSL (aging.zip) tem coloquei juntos localizada aqui:
https://OneDrive.live.com/?cid=c262e8e2d59a86d9&permissionsChanged=1&id=C262E8E2D59A86D9! 104

Abrindo isso no editor de texto favorito que você verá bastante de marcação de SharePoint XSL normal para processar modos de exibição, se você manter rolar para baixo até a linha 357 você verá o início dos modelos personalizados que eu adicionado a marcação, aquele primeiro sendo o modelo de "DateDiff" seguido de "calcular-juliano-dia" e "FieldRef_printTableCell_EcbAllowed.Days_x0020_At_x0020_Status". Esses são nossos três modelos que verifique e exibir nossos cálculos em nossos modos de exibição. Se você fizer usando nomes de campos diferentes que o especificado neste artigo, você precisará percorrer esses modelos e substituir todas as referências a outros nomes. Lembre-se, para isso que você vai querer usar o nome interno do campo não o nome de exibição.

Quando estiver satisfeito que o modelo está pronto para ir, navegue até sua biblioteca de estilos e carregue-o na pasta "Folhas de estilo XSL" e depois copiar o link para o arquivo. Isso permite fazer alterações facilmente-lo mais tarde, ou adicioná-lo a diferentes partes do site, como podemos, por favor.

Em seguida, vá à sua lista e selecione o modo de exibição que você criou anteriormente neste artigo. O "ações de Site" menu clique em "Editar página".

Comando Editar Página no menu Ações do Site

Localize a Web Part de exibição de lista na página e abra o menu Web Part clicando na seta para baixo pequena no canto superior direito. Selecione esse menu "Editar Web Part".

Editar comando da Web Part no menu da Web Part

Isso abrirá o menu da Web Part no lado direito da janela do navegador.

menu de Web Part

Clique em + para o "diversos" seção e localize a propriedade de "Link XSL".

Propriedade do Link XSL no menu Web Part

Cole o link para o seu arquivo XSL em sua biblioteca de estilos que você copiou anteriormente para baixo (pode ser um link relativo ou absoluto).

Link do arquivo XSL colado

Clique em "Okey" para salvar suas alterações e clique no botão "Parar edição" na faixa de opções "Página" no topo da página.

Botão Cancelar Edição na Guia Página

Se tudo foi configurado corretamente agora você deve ver números na sua "dias na coluna Status de".

Coluna de dias no Status exibindo número

E finalmente, aqui está ele seria aparência com alguns dados de várias datas de teste:

Relatório de vencimentos exibindo dados de teste

Resumo:

Ele há: uma maneira formatada corretamente, robusta e melhor desempenho para criar um relatório de duração no SharePoint., completa com uma implementação sem código simples. Isso tem bastante alguns aplicativos potenciais além aquele usar caso que podemos explorados aqui. Outro cenário comum para esse tipo de relatório é anexá-lo a uma lista de tarefas para que você possa ver quanto tempo ele foi desde que uma tarefa foi criada em um relance.

Aproveite!

– Justin

Justin Joyce, LANtek

Comentários

As etapas ausentes
8/10/2012 3:51 AM
okey eu seguiu as etapas, mas deve haver algo ausente - como o XSL saberá qual data usar ou qual campo para adicionar os dias desde em? gostam-lo quando etapas são perdidas.

Sem código, concordou!
30/8/2012 12 12h
concordo - não acho isso realmente conta como "sem código".
Interessante é por meio de algumas screwup do SharePoint, eu tenho uma coluna calculada de trabalho usando hoje... não tem certeza como ou por que porque não consigo-fazê-lo novamente, mas aquele ainda está lá e funcionando.

Fórmula para "Dias status" calculado coluna?
5/2/2012 7:39 AM
Justin - qual é a fórmula usada para a sua coluna de site calculado "Dias no Status" (coluna de espaço reservado)? Foi "= hoje"?

SharePoint 2007
2/12/2011 11:29 AM
atualmente eu não tentou aplicar esta solução SharePoint 2007, mas eu estou pesquisando-lo. Infelizmente não há nenhuma propriedade XslLink reproduzida na web part por meio da UI.

Postagem excelente
30/11/2011 53 9H
Olá,
excelente postagem.
Estou usando o SharePoint 2007.
Não tiver uma seção diversos conforme descrito acima.
Você tem etapas para uma configuração de SP2007?
Obrigado.

Re: Solução de sem código: exibir os dias desde que um item de lista do SharePoint foi último alterado
10/11/2011 8:24 AM
Chris alta.
localizar excelente!
i vou dar uma olhada no que você postou Felizmente posteriormente hoje e veja se i pode tornar esta solução um pouco mais robusto.
que estou feliz você curtiu a postagem e que estou muito feliz conseguir encontrar uma solução para o formato de data europeu. :)
-Justin

Solução para formatos de data Europeu
10/11/2011 6:45 AM
alta novamente Justin,
para informar, encontrado uma solução para o problema eu mencionado anteriormente nessa página;
https://sharepointbydummies.wordpress.com/2011/07/13/possible-work-around-to-date-format-issue-sharepoint-2010/

Formatos de data Europeu
10/7/2011 3:59 AM
Justin alta,
esse é um Obrigado realmente boa solução e apenas o tipo de coisa, eu gastou os últimos dois dias procurando! No entanto, estou tendo um pouco de um problema com ele e eu estava esperando que você poderia me ajudar.
eu tiver alterado seu código ligeiramente calcultate o número de dias até algo acontecer, em vez de já, alternando as variáveis na última linha da função "DateDiff";

< XSL: Value-selecione = "$JulianToday - $JulianStartDate" >< / XSL: Value-dos >

Entretanto estou apenas capaz de acessá-lo caclulate a diferença corretamente metade do tempo. Portanto, por exemplo com esta data (formato dd/MM/AAAA);

30/12/2011

calcula corretamente, mas com essa data (mesmo formato)

10/12/2011

-calcula como se 10 de dezembro de 2011 em vez de 12 de outubro de 2011.
tentei simplesmente alternar as posições dos valores de mês e dia na variável de "JulianStartDate", como esta:

< xsl: nome com parâmetro = select="substring(ddwrt:FormatDateTime(string($StartDate)"Mês", 1033, 'AAAAMMDD'), 7, 2)" / >
< xsl: com o parâmetro nome = "Dia" select="substring(ddwrt:FormatDateTime(string($StartDate), 1033, 'AAAAMMDD'), 5, 2)" / >

e isso corrigido o problema com a segunda data, mas ele foi incorreto para a primeira data!
Também tentei alterar as chamadas FormatDateTime usar LCID europeu e várias alterações para o último parâmetro de FormatDateTime (por exemplo, ddMMyyyy, MMddyyyy) com os ajustes apropriados para os parâmetros posicionais subcadeia sem sucesso.
eu bastante Agradecemos algum conselho você pode oferecer.
Obrigado,
Chris

Sem código
21/9/2011 4:27 AM
não acho que XSL qualifica como uma solução de "sem código", como Noções básicas sobre a linguagem XSL não é para todos - mas ela não envolve a programação. Além disso: boa solução, Obrigado!

Observação : Aviso de Isenção de Tradução Automática: Este artigo foi traduzido por computador, sem intervenção humana. A Microsoft oferece essas traduções automáticas para ajudar as pessoas que não falam inglês a aproveitar os textos escritos sobre produtos, serviços e tecnologias da Microsoft. Como este artigo foi traduzido automaticamente, é possível que contenha erros de vocabulário, sintaxe ou gramática.

Expanda suas habilidades
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar no Office Insider

Essas informações foram úteis?

Obrigado por seus comentários!

Agradecemos pelos seus comentários! Parece que pode ser útil conectar você a um de nossos agentes de suporte do Office.

×