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

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

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

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

3 ответа

Решение

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

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

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

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

<cfloop list="#cols#" index="col">
   <cfif StructKeyExists(myQuery, col)>
      <td>#col# = #myQuery[col][myQuery.CurrentRow]#</td>
   </cfif>
</cfloop>

Понял!!:)

#evaluate(evaluate("col"))#
Другие вопросы по тегам