データベースに最終的にコミットする前に、アップロードされたスプレッドシートを編集できるように cfGrid を使用するように依頼されました。CF 5/6 の頃には cfGrid に精通していましたが、最近は使用していません。したがって、単にデータを誤解している可能性があります。
私のグリッド呼び出しは次のとおりです。
<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>
グリッドに正しく表示される次のデータをアップロードします。
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
1 行目のデータを 2014 年 1 月 10 日に変更し、3 行目の日付を 2014 年 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」配列を使用して、新しいデータで更新する必要があるクエリ行を知ることができます。最初の行と 3 番目の行を更新し、それらの queryRowNum がそれぞれ 1 と 3 であるため、uGrid.QueryRowNum 配列でそれを期待していました。
この仮定は間違っていますか?その場合、更新するクエリ行をどのように知ることができますか?
このサーバーは CF9 を実行していると思います。
編集
奇妙なことに、送信ボタンをクリックしたときに選択したセルに基づいて、変更されていない列に渡されるものを変更できることに気付きました。最初の行で変更した列を選択してフォームを送信すると、すべてが正しく機能します。