我正在构建一个“仪表板”,我正在使用DVWP和XSLT来显示客户端的事情,例如任务的总数,打开的数量,关闭的数量等等article
我的问题是我有一个多值查找列,我需要获取值的计数,但我无法使用我尝试过的结果生成任何结果。
关于如何完成的任何建议或建议都会很棒。
所以要将上面的内容添加为更新:
我不确定如何达到预期效果的最佳方法。基本上我有一个多值查找列,目前有20个值。客户端可以在需要时添加新值。所以我试图做的是获得他们为每条记录选择的值的总计类型计数。
所以让我们假设例如查询列有五(5)个值:
价值1 价值2 价值3 价值4 价值5
在newform.aspx中,他们可以选择多个值(因此可以选择值3和值5;或者值2,值4和值5等)。在列表视图中,它当然会显示应该选择的选项。我试图做的是得到这些值的总数。
例如,输出看起来像:
Value 1 : 5
Value 2 : 1
Value 3 : 2
Value 4 : 3
Value 5 : 6
Value 3 & 5 : 4
Value 2,4, & 5: 3
我不确定XSLT是否可以开发这样的东西,因为我之前没有用这么复杂的Lookup Column来做这件事。通常我会像下面那样做,但这只能让我了解基础知识,因为价值可以合并,我不确定如何处理:
<xsl:template name="dvt_1.body">
<xsl:param name="Rows"/>
<xsl:variable name="total1" select="count(/dsQueryResponse/Rows/Row/@MyLookupCol.[contains(.,'1;#Value1')])"></xsl:variable>
<xsl:call-template name="cs3_totalRow">
<xsl:with-param name="cs3_RowName1">
Value 1
</xsl:with-param>
<xsl:with-param name="cs3_RowValue1">
<xsl:value-of select="$total1"/>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="totalsRow">
<xsl:param name="RowName1"></xsl:param>
<xsl:param name="RowValue1"></xsl:param>
<table>
<tr>
<td>
<xsl:value-of select="$cs3_RowName1"/>:
</td>
<td>
<xsl:value-of select="$cs3_RowValue1"/>
</td>
</tr>
</table>
答案 0 :(得分:0)
行;弄清楚了。您将需要使用MUENCHIAN METHOD,它利用键来生成“不同分组依据”列表,然后在表达式中使用count并计算键。
有关详细信息,请参阅以下代码:
<!--GROUPING USING THE MUENCHIAN METHOD-->
<!--Add a key as shown below. This is important! Will not "group by" without it-->
<xsl:key name="YourKeyNameHere" match="Row" use="@YourColumnName"/>
<xsl:template match="/">
<!--Get your column values look you normally would-->
<xsl:variable name="cbs_Rows" select="/dsQueryResponse/Rows/Row/@YourColumnName"/>
<table border="0" width="100%" cellpadding="2" cellspacing="0">
<tr valign="top">
<th class="ms-vh" nowrap="nowrap">TheValueName</th>
<th class="ms-vh" nowrap="nowrap">ValueTotals</th>
</tr>
<!--This gets the distinct strings for you.-->
<xsl:for-each select="//Row[generate-id() = generate-id(key('YourKeyName', @YourColumnName)[1])]">
<xsl:sort select="@YourColumnName"/>
<xsl:for-each select="key('YourKeyName', @YourColumnName)">
<xsl:call-template name="Rows.RowView" />
</xsl:for-each>
</xsl:for-each>
</table>
</xsl:template>
<!--then build your row view-->
<xsl:template name="Rows.RowView">
<xsl:variable name="SortValue" select="ddwrt:NameChanged(string(@YourColumnName), 0)"/>
<xsl:if test="string-length($SortValue) > 0">
<tr id="group0{generate-id()}">
<td>
<xsl:value-of select="@YourColumnName"/>
</td>
<td>
<xsl:value-of select="count(key('YourKeyName', @YourColumnName))"></xsl:value-of>
</td>
</tr>
</xsl:if>
</xsl:template>