-1

嗨,我在冷融合中做动态 TR 和 TD,但显然我正在尝试这种屏幕。这是我对 colfusion 的尝试

<cfif variables.newrow EQ true>
   <tr align="center">
  </cfif>
  <cfoutput query="gResults">
  <cfquery datasource="#request.dsn#" name="nextqueries">
        Query
  </cfquery>
    <td height="30" valign="middle"><strong>
    <a href="viewdir.cfm?catID=#val(pic_id)#
<cfif isDefined('url.l') and url.l neq ''>&l=#url.l#</cfif>">
    #pic_cat_name#</a></strong><br>
      <cfloop query="nextqueries">
      <cfquery datasource="#request.dsn#" name="showanother">
        select * from 
        mytable as grlist
      where pic_cid = 
      <cfqueryparam cfsqltype="cf_sql_numeric" value="#Trim(nextqueries.pic_id)">
      </cfquery>
      &raquo;&nbsp;&nbsp;
    <a href="viewdir.cfm?catID=#val(pic_id)#
   <cfif isDefined('url.l') and url.l neq ''>&l=#url.l#</cfif>">#pic_cat_name#
      </a> </cfloop></td>
    <cfif gResults.currentRow MOD 4 EQ 0>
        </tr>
      <cfset variables.newrow = true>
      <cfelse>
      <cfset variables.newrow = false>
    </cfif>
  </cfoutput>

试图这样做:

http://screencast.com/t/oso4jkhBm3

4

2 回答 2

2

有很多潜在的改进,但这个答案只会处理表行。你开始:

<cfif variables.newrow EQ true>
<tr align="center">
</cfif>

现在我要寻找结束标签。我唯一看到的是这里:

<cfif gResults.currentRow MOD 4 EQ 0></tr></cfif>

并且该行位于查询循环内。这意味着您可能有多个结束标签,或者您可能没有。你需要一个。要解决此特定问题,您必须执行以下操作:

<cfif variables.newrow EQ true>
<tr align="center">
code to populate this table row
</cfif>

当你把那部分整理好后,我们可以看看细节中的内容。

于 2013-06-02T11:49:28.027 回答
1

要使数据从上到下然后从左到右显示在 html 表格中,就像在您的问题中链接的图像中一样,您可以执行类似于以下的操作。

<!--- Get query results --->
<cfset arrayOFValues = arraynew(1)>
<cfset queryResults = querynew("Col1,Col2,Col3")>
<!--- Fill query with example data --->
<cfloop from="1" to="25" index="i">
    <cfset queryaddrow(queryResults)>
    <cfset querySetCell(queryResults, "Col1", "Col1 Row " & i)>
    <cfset querySetCell(queryResults, "Col2", "Col1 Row " & i)>
    <cfset querySetCell(queryResults, "Col3", "Col1 Row " & i)>
</cfloop>
<!--- Now have a query named queryResults with 25 rows --->
<!--- Set the number of columns and calculate the number of rows needed --->
<cfset numberOfColumns = 3>
<cfset rowsNeeded = ceiling(queryResults.recordcount / numberOfColumns)>
<cfoutput>
    <table>
        <cfloop from="1" to="#rowsNeeded#" index="curRow">
            <tr>
                <cfloop from="0" to="#numberOfColumns-1#" index="curCol">
                    <td>
                        #queryResults.Col1[(rowsNeeded * curCol) + curRow]#
                    </td>
                </cfloop>
            </tr>
        </cfloop>
    </table>
</cfoutput>

第一部分只是创建一个查询结果。然后,我通过将查询中返回的结果数除以要显示的列数来找到显示记录所需的行数。当ceiling结果不是整数时需要。

我们必须在行中循环每列记录以获得所需的索引。要找到所需的字段索引,我们必须将正在显示的行 + 列的 on 乘以将显示的行数。

如果您知道列数,您可以通过以下方式对其进行硬编码并消除内部循环。

<tr>
    <td>#queryResults.Col1[3 * rowsNeeded]#</td> 
    <td>#queryResults.Col1[3 + 1*rowsNeeded]#</td>
    <td>#queryResults.Col1[3 + 2*rowsNeeded]#</td>
</tr>
于 2013-06-05T21:56:00.867 回答