DVWP XSLT로 데이터를 정렬하고 중복을 제거합니다.
-
09-12-2019 - |
문제
SharePoint 2007에서 작업하고 있습니다. XSLT로 DVWP를 수정하려고합니다.
웹 파트는 목록에서 데이터를 가져옵니다. 내가하고 싶은 것은 데이터를 정렬하고 결과를 표시하는 것입니다. - Choice 필드 인 필드로 정렬 / 그룹을 정렬해야하기 때문에 데이터를 직접 정렬 할 수 없으므로 수 없습니다.
Me의 유일한 실행 가능한 솔루션은 XSLT를 수정하는 것이 었습니다. 모든 것이 잘되었고 문제가 생길 때 까지이 문제는 종류가 이상합니다.
정렬을 사용할 때 테이블에서 첫 번째 값을 표시하지 않습니다! 내가 정렬을 제거하면 내가 가지고 있어야하는 4 개의 (고유 한) 값이 있지만 Orderd가 아닙니다. 즉, 첫 번째 내부에서 정렬을 얻 자마자 3 가지 고유 한 값을 얻으십시오. 그리고 나는 그토리가 어떻게 될지 이해하지 못합니다.
나는 당신에게 내가 사용하는 XSLT를 제공 할 것입니다. 내게 내가 무엇을 잘못하고 있는지 이해하는 데 도움이되는 자산이 될 것입니다.
이 사용하는 고유 값을 구별하십시오.
<xsl:key name="ByCategory" match="/dsQueryResponse/Rows/Row" use="@Category" />
.
이 하위 그룹 (하위 템플리트)에서는이 wierd 동작을 얻습니다.
<xsl:call-template name="dvt_2.body">
<xsl:with-param name="Rows" select="$Rows" />
</xsl:call-template>
<xsl:template name="dvt_2.body">
<xsl:param name="Rows" />
<td>
<xsl:for-each select="$Rows[generate-id()=generate-id(key('ByCategory',@Category)[1])]">
<xsl:sort select="@Category"/>
<xsl:call-template name="dvt_2.rowview">
</xsl:call-template>
</xsl:for-each>
</td>
</xsl:template>
.
내가 말했듯이, 정렬을 제거하면 괜찮을 것입니다.하지만 정렬이 안되지만 정렬이 필요합니다.
어떤 생각?
미리 감사드립니다
추신 : 전체 XSLT 코드가 필요한 경우, 내가 제공 할 것이고,
해결책
나는 그 솔루션을 발견하고 나머지와 공유하고 싶을 것입니다, 어쩌면 그것은 그들이 미래에 도움이 될 것입니다 아니면 동일한 문제를 해결할 수 있습니다.
실제 문제는 첫 번째 노드가 통과하지 못했던 테스트가 다음과 같습니다.
<xsl:template name="dvt_2.rowview">
<xsl:if test="(position()=1)or(@Category!= (preceding-sibling::*[1]/@Category))">
//xslt
</xsl:if>
</xsl:template>
.
라고 불렀을 때마다 정렬 된 목록 (또는 정렬되지 않은 목록의 첫 번째 카테고리)이 IF를 통과하지 못했습니다.
테스트를 해제하면이 문제를 해결했습니다.
다른 사람들을 위해 유용 할 것입니다