一步步学习SPD2010--第五章节--处理数据视图(8)--处理XPath表达式

        在之前两个练习中,在使用数据视图或XLV Web部件时,你使用了XPath Expression Builder创建公式处理从SP返回的XML数据。然而使用XPathExpression Builder不能创建所有你需要的公式或表达式。有时候,为了获得更高程度的灵活性和控制,你需要以代码视图编辑XSLT,智能提示可以帮忙。然而,你需要深入了解XSLT才能直接编辑。你需要以代码视图编辑XSLT的例子就是处理计算值栏。

        默认情况下,SP给每个数字栏目提供两个栏。一个栏提供列表项目数值,第二个提供数值的显示格式。当数字栏目代表货币时,显示栏的值就包含逗号、点和货币符号。为了计算这些货币值的和,你使用数字栏。如果你使用显示栏来完成数学计算的话,XPath表达式会出错,显示NaN(not a number)。数字栏有与显示栏相同的名字,但是名字附加有个点。

        计算值栏没有相关数字栏。因此在XPath表达式中选择正确的栏目不是简单的任务。你在下面练习中使用的解决方案首先计算了节点函数,捕获XSL变量中的结果作为结果树部分,紧接着使用msxsl:node-set函数被转化用来作为总和函数的输入。在你配置计算值栏的时候,如果你不想创建自己的XLST代码,不要选择公式返回为货币类型。相反,创建额外的栏目储存货币符号。

        本次练习中,你使用插入公式对话框,并在代码视图中,修改XSLT代码来更正两个组的总和(非数字)。

        准备:打开CreateDVWP.aspx,选中SalesReport DFWP

1.    在List Price栏目点击NaN,在选项,点击公式

        小贴士:你可能需要再次点击NaN来高光。

2.    在Price和)中间,输入“.”点击确定。

       小贴士:你可以使用format-number公式将List Price格式为货币

3.    在Total Purchased栏,点击NaN,点击拆分(视图)。

       小贴士:你可能需要再次点击NaN来高光。

4.    在快速标签选择器上,点击<xsl:if>

       代码视图中,<xsl:iftest "$showfootercolumn ddwrt:cf-ignore "1">标签内部高光


5.    在代码视图,在<xsl:if左边按下Enter两次

6.    在第一空行,输入<xsl:var,按下Tab选择xsl:variable.按下空格,输入n,按下Tab选择name。


7.    在两个引号中间输入SumTotalPurchaseNodeset。在引号右边输入“>”,按下Enter两次。代码应该是这样:

      <xsl:variable name="SumTotalPurchasedNodeset">

      </xsl:variable>

8.    使用前几步用的技巧,创建下面的代码:

    <xsl:variable name="SumTotalPurchasedNodeset">

    <xsl:for-each select="$nodeset">

    <Value>

    <xsl:value-of

    select="substring-after(translate(@Total_x0020_Purchased,',',''),'$')"/>

    </Value>

    </xsl:for-each>

    </xsl:variable>

   小贴士:如果你不想输入代码,在SPDSBSC05.txt中复制粘贴也可以。

9.    在设计视图,Total Purchased栏目,点击NaN,在代码视图,删除

    <xsl:value-of     select="sum($nodeset/@Total_x0020_Purchased"/>。输入:

    <xsl:value-of

     select="concat('$',sum(msxsl:node-set($SumTotalPurchasedNodeset)/Value))"/>

10.  在设计视图,点击NaN。

        页面刷新,NaN被代替为$80619.40.

原文地址:https://www.cnblogs.com/crazygolf/p/3857112.html