Nota: este foi o primeiro publicado no www.endusersharepoint.com aquí: http://www.endusersharepoint.com/2009/11/02/comparing-dates-in-a-data-view-web-part-to-build-a-wss-kpi-in-sharepoint/.
Este é un post no blog comparando datas en XSL nunha parte de datos web vista no SharePoint.
Este é o meu escenario:
- Eu teño unha lista personalizada.
- A finalidade do negocio da lista é o de apoiar a idea dun novo traballador, como as súas tarefas para ser rematada no prazo 7 días de comezar o traballo.
- Eles están nunha "zona de alerta" tras 4 días se non está concluído estas tarefas.
- Eu quero crear un panel sinxelo que mostra verde cando quere completar a tarefa ou no caso de que teñen máis de 4 días para completa-lo.
- Eu quero o panel para amosar amarelo no caso de que están na zona de alerta.
- Quero mostrar vermello se non tiveren completado a tarefa despois da data de caducidade.
Peguei prestado Neste artigo en Marc Anderson Blog (http://mdasblog.wordpress.com/2008/02/19/comparing-dates-in-sharepoint-using-xsl/) para obter a lóxica de comparación e Neste artigo en www.endusersharepoint.com para as ideas básicas por detrás do taboleiro (http://www.endusersharepoint.com/2008/12/09/visual-indicators-for-the-masses-kpis-in-wss/) escrito por Toni Frankola.
Ten que ler os blogs de apoio, pero a implementación é así:
- Crear un tipo de contido (columnas + CT)
- Crear unha lista personalizada e asocialo con tipo de contido.
- Crear unha páxina web part.
- Engadir a lista personalizada á páxina web part.
- Abre a páxina no SPD.
- Converte a lista a un DVWP.
- Modifique o XSL para xerar os bits de taboleiro.
Eu teño dúas datas: a warning date and a due date. To compare the dates, meu XSL fai o seguinte:
<XSL:escoller> <!-- Cando ambos manual e política son asinados, que son verdes, con independencia de datas. -->
<XSL:cando proba="@Employee_x0020_Handbook_x003F_ = 1 e @ Security_x0020_Policies = 1"> <img src="/_layouts/images/KPIDefault-0.GIF" vello="No problems"/> <un href="/HumanResources/Lists/New Employee Checklist/EditForm.aspx?ID ={@ ID}&ères;Fonte = / HumanResources / Shared Documents / Dashboard.aspx Nova Contratación"> [Editar]</un> </XSL:cando> <!-- Amosar ámbar indicador se nós estamos máis aló da data de aviso. -->
<XSL:cando proba="ddwrt:FormatDateTime(corda(ddwrt:Hoxe()), 1033, 'YYYYMMDD') >= Ddwrt:FormatDateTime(corda(@ TaskDueDate), 1033, 'YYYYMMDD')"> <img src="/_layouts/images/KPIDefault-2.GIF" vello="Overdue"/> <un estilo="border: 0px" href="/HumanResources/Lists/New Employee Checklist/EditForm.aspx?ID ={@ ID}&ères;Fonte = / HumanResources / Shared Documents / Dashboard.aspx Nova Contratación"> [Editar]</un> </XSL:cando> <!-- Mostrar o indicador vermello se pasou a data de caducidade. -->
<XSL:cando proba="ddwrt:FormatDateTime(corda(ddwrt:Hoxe()), 1033, 'YYYYMMDD') >= Ddwrt:FormatDateTime(corda(@ Warning_x0020_Date), 1033, 'YYYYMMDD')"> <img src="/_layouts/images/KPIDefault-1.GIF" vello="Warning"/> <un href="/HumanResources/Lists/New Employee Checklist/EditForm.aspx?ID ={@ ID}&ères;Fonte = / HumanResources / Shared Documents / Dashboard.aspx Nova Contratación"> [Editar]</un> </XSL:cando> <!-- Se chegamos ata aquí, estamos antes da data de aviso, polo que estamos verde. -->
<XSL:se non> <img src="/_layouts/images/KPIDefault-0.GIF" vello="No problems"/> <un href="/HumanResources/Lists/New Employee Checklist/EditForm.aspx?ID ={@ ID}&ères;Fonte = / HumanResources / Shared Documents / Dashboard.aspx Nova Contratación"> [Editar]</un> </XSL:se non> </XSL:escoller> |
Algúns puntos clave de arriba:
- I tried to compare dates without using the ddwrt functionality and got nowhere. I still don’t understand that. They dates displayed correctly, pero ao mesmo tempo ">"E"<” comparisons always failed. A finais, ddwrt veu no meu socorro (grazas, novo, Bagazo).
- Eu tamén estou mostrando un [Editar] link to the item. I mainly did this so that I could easily test this out. The link itself may be useful to someone trying to figure it out.
- Isto é aplicado en SharePoint en liña e funciona moi ben.
- As imaxes que fan referencia no directorio _layouts (/_layouts / images / KPI episodio) están dispoñibles fóra da caixa no meu entorno para que probabelmente están dispoñibles para ti tamén.
Aquí está unha captura de pantalla do que parece a min:
</final>
Siga-me no Twitter http://www.twitter.com/pagalvin