CFSCRIPT - Как я могу изменить ссылку, чтобы сократить имя? - PullRequest
1 голос
/ 12 августа 2011

Я делаю цикл for в CFSCRIPT.Я перебираю запрос и сбрасываю поля в ячейку таблицы через UDF (вот что такое wrapCell ()).

for(i = 1; i lte GetUsers.RecordCount; i++) {
Cells = Cells & wrapCell("#GetUsers.FirstName[i]# #GetUsers.LastName[i]#");
Cells = Cells & wrapCell(lcase(GetUsers.Email[i]));
Cells = Cells & wrapCell(getYesNo(GetUsers.Active[i]));
writeOutput(wrapRow(Cells));
}

Каждый раз, когда мне нужно сослаться на поле, я должен написать это:

GetUsers.FirstName[i]
GetUsers.LastName[i]
GetUsers.Email[i]
GetUsers.Active[i]

Id 'очень хотелось бы иметь возможность ссылаться на этот материал так:

FirstName
LastName
Email
Active

Есть ли способ изменить ссылку перед выходной строкой, чтобы она занимала меньше места?Например, могу ли я сделать что-то вроде этого:

ThisRow = GetUsersStructure.RowInfo[i];
FirstName
LastName
Email
Active

Ответы [ 2 ]

1 голос
/ 12 августа 2011

Можно.Это добавит накладных расходов.

Преобразование строки или всего запроса в структуру.http://www.bennadel.com/blog/149-Ask-Ben-Converting-A-Query-To-A-Struct.htm

Затем добавьте результаты в локальную область.

StructAppend( local , QueryToStruct( GetUsers, i ) );

Если вы используете CF9 / railo, вы можете получить к ним доступ просто по имени столбца.(Я не проверял это.)

1 голос
/ 12 августа 2011

Я не знаю ни одного нативного метода, который позволял бы вам делать это при использовании <cfscript>, но вы могли бы создать другой удобный метод для этого.Например,

public struct function getByRow( query q, numeric index ){
  return {
       firstname = q.firstname[index],
       lastname = q.lastname[index],
       email = q.email[index],
       active = q.active[index]
  }; 

}

Вы могли бы сделать еще один шаг вперед и сделать цикл метода через q.columnlist, чтобы сделать его универсальным для повторного использования.

...