2013-06-02 43 views
-1

你好我在做coldfusion動態TR和TD,但顯然我正在嘗試這種屏幕。這裏是我的嘗試colfusion需要諮詢..動態TDD

<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

而且?怎麼了? – Ted

回答

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> 

當你得到的那部分整理出來,大家可以看一下什麼進入細節。

+0

規則1 - 不要認真對待。詢問你的問題並專注於答案和建議。我不時得到負面投票,但沒有人在Stackoverflow可以帶走我們的生日。 –

+0

'爲什麼我的問題被標記爲負值' - 問題是什麼?你說'需要建議' - 究竟是什麼?出了什麼問題,你想做什麼?這些都不是從你的'問題'中清楚的 – duncan

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

我們必須循環每行記錄以獲得所需的索引。要查找所需的字段索引,我們必須採用正在顯示的行+列的行數乘以將顯示的行數。

如果知道可以按以下方式對它們進行硬編碼的列數並消除內部循環。

<tr> 
    <td>#queryResults.Col1[3 * rowsNeeded]#</td> 
    <td>#queryResults.Col1[3 + 1*rowsNeeded]#</td> 
    <td>#queryResults.Col1[3 + 2*rowsNeeded]#</td> 
</tr>