CFSCRIPT - 如何更改引用以缩短名称?

时间:2011-08-12 18:22:59

标签: coldfusion

我在CFSCRIPT中执行for循环。我循环查询并通过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]

我很想能够像这样引用这些东西:

FirstName
LastName
Email
Active

有没有办法在输出行之前更改引用,以便占用更少的空间?例如,我可以这样做:

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

2 个答案:

答案 0 :(得分:1)

我不知道任何允许您在使用<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,使其成为通用的重用方法。

答案 1 :(得分:1)

你可以。它会增加开销。

将行或整个查询转换为结构。 http://www.bennadel.com/blog/149-Ask-Ben-Converting-A-Query-To-A-Struct.htm

然后将结果抛出到本地范围。

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

如果您使用的是CF9 / railo,则只需按列名访问它们即可。 (我没有测试过这个。)