2014-08-28 5 views
1

마지막으로 데이터베이스에 커밋하기 전에 업로드 된 스프레드 시트를 편집 할 수 있도록 cfGrid를 사용하라는 요청을 받았습니다. CF 5/6 일에 cfGrid에 익숙했지만 최근에 사용하지 않았습니다. 그래서 나는 단순히 데이터를 잘못 해석 할 수 있습니다.왜 cfGrid가 잘못된 데이터를 전달하는 것처럼 보입니까?

QueryRowNum profileID speakingDate 
    1 1 1/1/2014 
    2 2 1/15/2014 
    3 3 3/7/2014 
    4 5 5/9/2014 
    5 6 11/8/2014 

내가 2014년 1월 10일에 라인 하나에 데이터를 변경 :

<cfgrid name="uGrid" 
     format="html" 
     query="xlsData" 
     title="Edit Uploaded Data" 
     striperows="yes" 
     selectmode="edit" 
     delete="yes"> 
      <cfgridcolumn name="queryRowNum" display="true" /> 
      <cfloop list="#replace(form.columnList, " ", "", "All")#" index="i"> 
       <cfgridcolumn name="#i#" header="#i#" width="200" select="Yes" /> 
      </cfloop> 
    </cfgrid> 

내가 그리드에 제대로 표시되는 다음과 같은 데이터를 업로드 다음과 같이

내 그리드 전화입니다 2014 년 3 월 3 일부터 3 월 17 일까지의 날짜와 그리드를 제출하십시오. 다음 페이지에서 cfGrid가 전달하는 것을 볼 수 있도록 양식 범위를 덤프합니다. 업데이트를 위해 전달 된 배열을 살펴볼 계획입니다.

UGRID.QUERYROWNUM 
    array 
    1 3 
    2 4 
    UGRID.ROWSTATUS.ACTION 
    array 
    1 U 
    2 U 
    UGRID.SPEAKINGDATE 
    array 
    1 1/10/14 
    2 3/17/14 

내가 대신이 기대 : 이것은 내가 양식 범위에 표시되는 내용입니다 (워드 프로세서 기준)

UGRID.QUERYROWNUM 
    array 
    1 1 
    2 3 
    UGRID.ROWSTATUS.ACTION 
    array 
    1 U 
    2 U 
    UGRID.SPEAKINGDATE 
    array 
    1 1/10/14 
    2 3/17/14 

내 기대를 변경하는 모든 행이 전체 행을 것입니다 통과했다. 그런 다음 "queryRowNum"배열을 사용하여 새 데이터로 업데이트해야하는 쿼리 행을 파악할 수 있습니다. 첫 번째 행과 세 번째 행을 업데이트 했으므로 각각 1과 3의 queryRowNum을 가졌으므로 uGrid.QueryRowNum 배열에서 예상했을 것입니다.

이 가정은 올바르지 않습니까? 그렇다면 어떻게 업데이트 할 쿼리 행을 알 수 있습니까?

이 서버는 실행 중이며, CF9입니다.

편집

이상하게도, 난 그냥 제출 버튼을 클릭 할 때 내가 선택한 항목 세포를 기반으로 변경되지 않은 열의를 따라 전달되는 변경할 수 있습니다 것으로 나타났습니다. 첫 번째 행에서 변경 한 열을 선택하고 양식을 제출하면 모든 것이 올바르게 작동합니다.

답변

0

나는 또한이 이상한 행동을 발견했습니다. "html"형식의 솔루션을 찾지 못했습니다. 내가 사용한 해결 방법은 "플래시"형식입니다. HTML에서 플래시로의 변경은 모든 올바른 데이터를 보냅니다.

<cfif isdefined('form.submit')> 
    <cfdump ="#form1#"> 
    <cfgridupdate grid = "uGrid" dataSource = "#DSN" tableName = "#tablename#" keyOnly="true" > 
</cfif> 

<cfquery name="xlsData">  
</cfquery> 

<cfform name="form1" action="#cgi.script_name#" format="flash" method="post"> 

<cfgrid name="uGrid" 
      format="flash" 
      query="xlsData" 
      title="Edit Uploaded Data" 
      striperows="yes" 
      selectmode="edit" 
      delete="yes"> 

      <cfgridcolumn name="queryRowNum" display="true" /> 
      <cfloop list="#replace(form.columnList, " ", "", "All")#" index="i"> 
        <cfgridcolumn name="#i#" header="#i#" width="200" select="Yes" /> 
      </cfloop> 
    </cfgrid> 
    <cfinput name="submit" type="Submit" value="Save All Changes"> 
</cfform>