2013-06-04 8 views
0

테이블과 "항목 추가"버튼이있는 폼이 하나 있습니다. "항목 추가"를 클릭하면 사용자가 세부 정보를 추가 할 수있는 두 번째 양식이 열립니다. 두 번째 페이지에서 "제출"을 클릭하면 세부 정보가 첫 번째 화면의 표에 새 행으로 추가됩니다. 배열에 구조체를 추가/추가하려면 구조체를 사용하고 있습니다.ColdFusion 배열, 값 유지

사용자가 새 행을 추가하려고 할 때마다 기존 배열 (1 페이지)에 새 구조체를 만들고 첫 번째 페이지에 배열을 표시하려고합니다.

<cfset arrayRequisition[k] = StructNew() />  
<cfset arrayRequisition[k].Part_Nbr = #Variables.ReqDescription# />  
<cfset arrayRequisition[k].Description = #Variables.EQT_DESCRIPTION# />  
<cfset arrayRequisition[k].Quantity = #Variables.RQT_QUANTITY# /> 
<cfset arrayRequisition[k].Status = "pending" />  
<cfset arrayRequisition[k].Line_No = #i# /> 

여기서 K은 매회 추가되고 증가되는 행의 수입니다. 그러나 나는 이렇게 할 때 오류가 발생합니다 :

"배열 필드 1을 찾을 수 없습니다".

문제를 해결하면 테이블에 마지막 행만 표시됩니다.

<cfoutput> 
<table border="1"> 
    <tr> 
    <td style="font-weight:bold;">Part_Nbr&nbsp;&nbsp;</td> 
    <td style="font-weight:bold;">Description&nbsp;&nbsp;</td> 
    <td style="font-weight:bold;">Quantity&nbsp;&nbsp;</td> 
    <td style="font-weight:bold;">Status&nbsp;&nbsp;</td> 
    <td style="font-weight:bold;">Line_No</td> 
    </tr> 
    <cfdump var="#i#"> 
    <cfloop from="1" to="#arrayLen(arrayRequisition)#" index="j"> 
    <cfdump var="#arrayLen(arrayRequisition)#"> 
    <tr> 
    <td>#arrayRequisition[j].Part_Nbr#</td> 
    <td>#arrayRequisition[j].Description#</td> 
    <td>#arrayRequisition[j].Quantity#</td> 
    <td>#arrayRequisition[j].Status#</td> 
    <td style="text-align:right;">#arrayRequisition[j].Line_No#</td> 
</tr> 
</cfloop> 
</table> 
</cfoutput> 

내가 알기로, 두 페이지 사이의 전환 중에 이전 구조체 데이터/배열 데이터가 손실됩니다. 이 경우 배열의 값을 어떻게 유지할 수 있습니까?

답변

0

두 개의 다른 ColdFusion 템플릿 (.cfm 파일)이있는 것 같습니다. 그렇다면 ColdFusion 템플릿에서 사용하는 변수는 해당 브라우저 요청 동안에 만 사용할 수 있다는 것을 이해해야합니다. ColdFusion 템플릿이 실행되고 사용자에게 응답이 보내지면 해당 변수는 "손실"됩니다. 다음은 ColdFusion 응용 프로그램의 수명주기에 대한 개요를 제공하는 페이지입니다 : Elements of a ColdFusion application. 후속 요청에 대한 값을 유지하기 위해

당신 (이 모두 포함 된 목록이 아닙니다) 수 :

  • 패스 지속적인 범위에서 변수 각 양식 제출
  • 스토어와 모든 값 의 session
  • 처럼
  • 그런

당신이 선택하는 옵션에 따라 값을 저장하는 데이터베이스를 사용하여 ColdFusion에서 템플릿이 필요합니다 영구적 인 장소 (두 번째 템플리트)에 값을 저장하고 영구적 장소 (기존 템플리트)에서 기존 값을 읽도록 변경하십시오.

단일 ColdFusion 템플리트의 AJAX 호출을 사용하기 위해 전체 프로세스를 다시 작성할 수도 있습니다. 여기서 AJAX 함수는 변수 값의 업데이트 및 검색을 제어하는 ​​새로운 ColdFusion CFC를 작성해야합니다. 나는이 옵션이 당신을 위해 더 광범위한 재 작성이 될 것이라고 믿습니다.

0

arrayRequisition이 실제로 배열인지 확인하십시오. 첫 번째 예에서 보여주는 구문을 사용하면 CF가 배열이 아닌 구조를 생성합니다. 다음 전화 varName[x] = someVar을하는 것은 실제로 당신이 등 키 Part_nbr, Description을 포함하고 구조체를 만들 필요가 배열을 만들려면 변수 x

의 가치의 핵심으로 당신에게 구조를 줄 것이다 arrayAppend(arrayRequisition, newStruct)