Двойная оценка. Как получить доступ к моему столбцу запроса на основе переменной, содержащей имя столбца? - PullRequest
2 голосов
/ 26 января 2011

У меня есть запрос и список имен полей / столбцов. Я хочу сделать что-то вроде двойного цикла - цикл по каждой записи в запросе, а затем цикл по списку имен полей / столбцов и вывод каждого соответствующего поля. Циклы должны быть примерно такими:

<table>
    <cfoutput query="myQuery">
        <tr>
            <cfloop list="#cols#" index="col">
                <td>?</td>
            </cfloop>
        </tr>
    </cfoutput>
</table>

Проблема в том, что поставить там, где стоит знак вопроса ... Я пробовал #myquery[col]#, но это не сработало. Мне нужно получить переменную, указанную именем строки в переменной col ... И, очевидно, #col# просто вернет имя столбца. Мне нужно найти какой-то способ для двойной оценки строки ... что-то вроде ##col##, что, конечно, тоже не сработает. Как мне это сделать?

Ответы [ 3 ]

7 голосов
/ 26 января 2011

При обращении к именам столбцов как к структуре вам также необходимо указать в запросе, какую строку вы хотите получить.Вы также должны убедиться, что вы проверяете, существует ли имя столбца, если вы не получили переменную cols через myQuery.ColumnList.

Используйте следующий код для динамической ссылки на каждый столбец в вашем цикле:

<table>
    <cfoutput query="myQuery">
        <tr>
            <cfloop list="#cols#" index="col">
                <td>#myQuery[col][CurrentRow]#</td>
            </cfloop>
        </tr>
    </cfoutput>
</table>
0 голосов
/ 26 января 2011

Вы все еще можете использовать подход Сергея с вашим собственным списком столбцов:

<cfloop list="#cols#" index="col">
   <cfif StructKeyExists(myQuery, col)>
      <td>#col# = #myQuery[col][myQuery.CurrentRow]#</td>
   </cfif>
</cfloop>
0 голосов
/ 26 января 2011

Понял !!:)

#evaluate(evaluate("col"))#
...