1

少し難しい質問ですが、私の評価の高いバンドのページには、評価の高い順にバンドのロゴが表示されています。私の唯一の問題は、1 から 10 までの cfloop を使用してレコードをカウントしたいことです。2 つの列に分割されているため、1 から 9 まで、もう 1 つは 2 から 10 まで、それぞれのステップで2。

誰でもこれで私を助けることができますか? 私が混乱している場合は、それについて言及し、私が何を意味するのかを正確に明確にしようとします.

    <DIV class="community_middle">

    <cfoutput query="top10MostRated">
        <cfloop from="2" to="10" index="i" step="2">
        <DIV class="communityContent">
                            #chr(i)#
            <IMG src="logo/#top10MostRated.Logo#" alt="#top10MostRated.Name#" width="100%" height="100%"></IMG>
        </DIV>
        <BR/>
        </cfloop>
    </cfoutput>

</DIV>
4

5 に答える 5

2

これらの回答は、質問の横並びの部分に対応していると思いますが、「同じ画像」の問題については説明していません。彼らのコードは正しく書かれていますが、理由を説明していません。

あなたのコード:

        <IMG src="logo/#top10MostRated.Logo#" 
             alt="#top10MostRated.Name#" 
             width="100%" height="100%"></IMG>


<cfloop query = "top10MostRated">...または<cfoutput query = "top10MostRated">ブロック 内にいるだけなら問題ありません。その理由は、これらのタイプのブロック内では、CFが現在の行のデータが必要であることを認識できるほど賢いためです。それは次と同じになります:

        <IMG src="logo/#top10MostRated.Logo[top10MostRated.currentRow]#" 
             alt="#top10MostRated.Name[top10MostRated.currentRow]#" 
             width="100%" height="100%" />


cfloopブロック内との間でネストしているため<cfoutput query = "">、予期しない結果が発生します。既存のコードは常に、外部ループによって提供されるレコードを要求しています。したがって、同じ画像が5回表示されます。(提供されている優れた例のいずれかを使用すると、これから抜け出すのに役立ちます)が、クエリを削除しcfoutput、インデックスを使用してループ内の正しい行の値を表示するようにCFに要求することができます(インデックスを次のように設定します) "i")なので、以下はループに対応する画像を示しています。

        <IMG src="logo/#top10MostRated.Logo[i]#" 
              alt="#top10MostRated.Name[i]#" 
              width="100%" height="100%" />
于 2012-12-12T15:13:40.177 に答える
2

奇数/偶数リストを個別に実行する場合は、クエリの currentrow プロパティをモジュロ演算子 (%) と組み合わせて使用​​して、行が奇数か偶数かを調べることができます。

<cfloop query="topBands>
  <cfif topBands.currentRow % 2 = 1>
    <!--- do your odd number output here --->
  </cfif>
</cfloop>
<cfloop query="topBands>
  <cfif topBands.currentRow % 2 = 0>
    <!--- do your even number output here --->
  </cfif>
</cfloop>
于 2012-12-12T12:29:40.417 に答える
0

私はそれを別の方法で行います。目的は、レコード 1 と 2 を並べて表示することですが、@barnyr の回答には表示されません。

<cfoutput>
<cfloop from="2" to="topbands.recordcount + 1" index = "i" step="2">
    #topbands.fieldname[i-1]#  
    <cfif i lte topbands.recordcount>
        #topbands.fieldname[i]# <br />
    </cfif>
</cfloop>
</cfoutput>
于 2012-12-12T13:06:27.623 に答える
0

Ben Nadel はまさにこれに関する投稿をしています。リンクはこちら これの内訳は

<cfloop query="top10MostRated">
    <cfif top10MostRated.CurrentRow MOD 2>
        <!--- Add to the "odd list" --->
    <cfelse>
        <!--- Add the record to the "even list" --->
    </cfif>
</cfloop>

次に、oddListevenListの 2 つのリストが作成されます。あとはそれらを表示するだけです。

于 2012-12-12T12:31:27.690 に答える
0

取得したいのは、偶数番号のレコードのコレクションと奇数番号のレコードのコレクションのようです。Coldfusion 10 または Railo 4 では、 Underscore.cfcの groupBy()を使用して、次のようにクエリ結果を管理可能なサブセットに分割できます。

_ = new Underscore();// instantiate the library
groupedBands = _.groupBy(topBands, function (val, index) {
   return index % 2 ? "odd" : "even";
}); 

oddこれは、 と の 2 つの要素を持つ構造体を返しますeven。それぞれの要素には、奇数または偶数のレコードの配列が含まれています。結果の例:

{
   odd: [{name: "Band one"}, {name: "Band three"}],
   even: [{name: "Band two"}, {name: "Band four"}]
}

結果を論理サブセットに分割すると、コードが読みやすくなります。

<cfoutput>
   <cfloop from="1" to="5" index="i">
      <div class="left">#groupedBands.odd[i].name#</div>
      <div class="right">#groupedBands.even[i].name#</div>
   </cfloop>
</cfoutput>

必要に応じて、ページの他の場所でこれらのサブセットを使用することもできます。

注:Underscore.cfcを書きました

于 2012-12-12T18:19:15.950 に答える