-2

私は、DVWPとXSLTを使用して、この記事と同様に、タスクの総数、開いている数、閉じている数などをクライアントに表示する「ダッシュボード」を作成中です。

私の問題は、値のカウントを取得する必要がある複数値ルックアップ列があるのに、試した結果を生成できないことです。

達成する方法についての提案や推奨事項は素晴らしいでしょう。

したがって、上記に更新として追加するには:

望ましい結果を達成するための最善のアプローチは正確にはわかりません。基本的に、現在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がそのようなものを開発するかどうかはわかりません。通常、私は以下のようなことをしますが、これは私に基本を与えるだけであり、値を組み合わせることができるので、私はどのようにアプローチするかがわかりません:

<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>
4

1 に答える 1

0

わかった; 理解した。「個別のgroupby」リストのようなものを生成するためにキーを利用するMUENCHIANMETHODを使用してから、式で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) &gt; 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>
于 2012-07-02T19:05:52.620 に答える