2016-11-09 4 views
1

...데이터보기에서 조인 된 항목 열을 필터링하는 방법은 무엇입니까? 나는 필터 대화 상자를 사용하여 필터를 생성 할 때, SPD는 다음 행 필터를 생성

<xsl:variable name="Rows" select="/dsQueryResponse/Benefits/Rows/Row[normalize-space(@Benefit_x0020_Type) = $pBenefit and normalize-space(@Level) = $pLevel]"/> 

@ Benefit_x0020_Type의 필터가 잘 작동합니다 (이것은 단지 정기적, 비 연결, 아이템입니다) @Level 필터는 작동하지 않습니다. @ 레벨은 다음과 같이 선언 된 조인 된 항목입니다 ...

<xsl:value-of disable-output-escaping="yes" select="../../../Projects/Rows/Row[@ID=current()/@Project_x003a_ID]/@Level" /> 

조인 된 항목에 대해 필터를 작동 시키려면 어떻게해야합니까?

답변

0

은 내가 찾은 솔루션합니다 ... $ 행의 노드 집합이 이제까지 SharePoint에서 렌더링되기 전에 조인 된 필드를 포함하는 편집했다

<xsl:variable name="Rows" select="/dsQueryResponse/Benefits/Rows/Row"/> 

<xsl:variable name="myRowsFractured"> 
    <xsl:for-each select="$Rows"> 
    <xsl:variable name="projectID" select="@Project_x003a_ID"/> 
    <xsl:variable name="level" select="/dsQueryResponse/Projects/Rows/Row[@ID=$projectID]/@Level"/> 
    <xsl:if test="$level = $pLevel"> 
     <xsl:copy> 
     <xsl:copy-of select="@*|node()"/> 
     <xsl:attribute name="Level"> 
      <xsl:value-of select="$level"/> 
     </xsl:attribute> 
     <xsl:attribute name="Title"> 
      <xsl:value-of select="/dsQueryResponse/Projects/Rows/Row[@ID=$projectID]/@Title"/> 
     </xsl:attribute> 
     </xsl:copy> 
    </xsl:if> 
    </xsl:for-each> 
</xsl:variable> 

<xsl:variable name="myRows" select="msxsl:node-set($myRowsFractured)/*"/> 

($ pLevel는 쿼리 문자열에서 획득)

다음 $ Row의 후속 참조를 $ myRows로 바꿉니다. 이 기법은 모든 계산 (예 : dvt_RowCount)이 유효하다는 장점이 있습니다.