2011-08-12 86 views
1

我在CFSCRIPT中做一個循環。我循環查詢並通過UDF將字段放入表格單元格中(這就是wrapCell()的作用)。CFSCRIPT - 如何更改參考以縮短名稱?

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 

回答

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

你可以。它會增加開銷。

將您的行或整個查詢轉換爲結構。 http://www.bennadel.com/blog/149-Ask-Ben-Converting-A-Query-To-A-Struct.htm

然後將結果放入本地範圍。

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

如果您使用CF9/railo,那麼您只需按列名稱訪問它們即可。 (我還沒有測試過這個)。

+2

這個Ben Nadel是誰?他有沒有什麼可做的,但寫出有用的教程?是的,我認爲這是我尋找的東西。我會執行它並讓你知道。謝謝! –