Observação: Isto foi Postado em www.endusersharepoint.com here: http://www.endusersharepoint.com/ 2009/11/02/comparing-dates-in-a-data-view-web-part-to-build-a-wss-kpi-in-sharepoint/.
Este é ainda outro blog post comparando datas em XSL em uma web part de exibição dados no SharePoint.
Este é o meu cenário:
- Eu tenho uma lista personalizada.
- A finalidade do negócio da lista é apoiar a idéia de um novo funcionário e suas funções para ser concluído no prazo de 7 dias de começar o trabalho.
- Eles estão em uma "zona de alerta" após 4 dias se eles não concluídas essas tarefas.
- Eu quero criar um painel de controle simples que mostra verde quando eles também completaram a tarefa ou se eles têm mais de 4 dias para concluí-lo.
- Eu quero o painel mostrar amarelo, se eles estão na zona de aviso.
- Eu quero mostrar vermelho se eles não tem concluído a tarefa após a data de vencimento.
Pedi emprestado Este artigo às De Marc Anderson blog (http://mdasblog.wordpress.com/2008/02/19/comparing-dates-in-sharepoint-using-xsl/) para obter a lógica de comparação e Este artigo às www.endusersharepoint.com para as idéias básicas por trás do painel de controle (http://www.endusersharepoint.com/2008/12/09/visual-indicators-for-the-masses-kpis-in-wss/) escrito por Toni Frankola.
Você deve ler os Blogues de apoio, Mas a implementação é assim:
- Criar um tipo de conteúdo (colunas + CT)
- Criar uma lista personalizada e associá-lo com o tipo de conteúdo.
- Criar uma página de web Parts.
- Adicionar a lista personalizada para a página de web Parts.
- Abra a página em SPD.
- Converter a lista para um DVWP.
- Modificar o XSL para gerar os bits do painel de controle.
Eu tenho duas datas: uma data de aviso e uma data de vencimento. Para comparar as datas, meu xsl faz o seguinte:
<XSL:Escolha> <!-- Quando assinatura manual e política, Nós somos verdes independentemente de datas. -->
<XSL:Quando teste="@Employee_x0020_Handbook_x003F_ = 1 e @Security_x0020_Policies = 1"> <img src= "/ layouts/imagens/KPIDefault-0.GIF" Alt= "Sem problemas"/> <uma href= "/ Recursos humanos/listas/novo empregado Checklist/EditForm.aspx?ID ={@ ID}&Fonte = / recursos humanos/compartilhado documentos/nova contratar Dashboard.aspx"> [Editar]</uma> </XSL:Quando> <!-- Mostrar o indicador âmbar se passamos a data de aviso. -->
<XSL:Quando teste= "ddwrt:FormatDateTime(Cadeia de caracteres(ddwrt:Hoje()), 1033, 'yyyyMMdd') >= ddwrt:FormatDateTime(Cadeia de caracteres(@TaskDueDate), 1033, 'yyyyMMdd')"> <img src="/_layouts/images/KPIDefault-2.gif" Alt= "Overdue"/> <uma estilo= "fronteiriços: 0PX" href= "/ Recursos humanos/listas/novo empregado Checklist/EditForm.aspx?ID ={@ ID}&Fonte = / recursos humanos/compartilhado documentos/nova contratar Dashboard.aspx"> [Editar]</uma> </XSL:Quando> <!-- Mostrar o indicador vermelho se passamos a data de vencimento. -->
<XSL:Quando teste= "ddwrt:FormatDateTime(Cadeia de caracteres(ddwrt:Hoje()), 1033, 'yyyyMMdd') >= ddwrt:FormatDateTime(Cadeia de caracteres(@Warning_x0020_Date), 1033, 'yyyyMMdd')"> <img src="/_layouts/images/KPIDefault-1.gif" Alt= "Aviso"/> <uma href= "/ Recursos humanos/listas/novo empregado Checklist/EditForm.aspx?ID ={@ ID}&Fonte = / recursos humanos/compartilhado documentos/nova contratar Dashboard.aspx"> [Editar]</uma> </XSL:Quando> <!-- Se chegarmos aqui, Estamos anteriores à data do aviso, Então, nós estamos verdes. -->
<XSL:caso contrário> <img src= "/ layouts/imagens/KPIDefault-0.GIF" Alt= "Sem problemas"/> <uma href= "/ Recursos humanos/listas/novo empregado Checklist/EditForm.aspx?ID ={@ ID}&Fonte = / recursos humanos/compartilhado documentos/nova contratar Dashboard.aspx"> [Editar]</uma> </XSL:caso contrário> </XSL:Escolha> |
Alguns pontos-chave de cima:
- Eu tentei comparar datas sem usar a funcionalidade de ddwrt e adiantou. Eu ainda não entendo isso. Eles datas exibidas corretamente, Mas ambos">"e"<"comparações sempre falha. No final, ddwrt veio em meu socorro (Obrigado, mais uma vez, Marc).
- Eu também estou exibindo um [Editar] link para o item. Principalmente fiz isto para que eu pudesse facilmente testar esta fora. O próprio link pode ser útil para alguém tentando descobrir.
- Isso é implementado no SharePoint online e funciona muito bem.
- As imagens de que referência no diretório layouts (/layouts/imagens/KPI...) estão disponíveis fora da caixa no meu ambiente, então eles estão provavelmente disponíveis para você também.
Aqui está uma captura de tela do que parece para mim:
</fim>
Siga-me no Twitter em http://www.twitter.com/pagalvin