如何筛选到数据视图中的联接项列?
Posted
技术标签:
【中文标题】如何筛选到数据视图中的联接项列?【英文标题】:How can I filter to a Joined Item column in a Data View? 【发布时间】:2017-03-23 18:58:48 【问题描述】:当我使用过滤器对话框生成过滤器时,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 的过滤器不起作用。 @Level 是一个 Joined Item,声明如下...
<xsl:value-of disable-output-escaping="yes" select="../../../Projects/Rows/Row[@ID=current()/@Project_x003a_ID]/@Level" />
我怎样才能使过滤器对加入的项目起作用?
【问题讨论】:
【参考方案1】:我找到的解决方案是编辑 $Rows 节点集以在 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 是从查询字符串中获取的)
然后我将 $Rows 的任何后续引用替换为 $myRows。这种技术的优点是任何计算(例如 dvt_RowCount)都是有效的。
【讨论】:
以上是关于如何筛选到数据视图中的联接项列?的主要内容,如果未能解决你的问题,请参考以下文章