1

我被要求使用 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/10/2014,将第 3 行的日期更改为 3/17/2014,然后提交网格。在下一页上,我转储了表单范围,以便查看 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”数组来了解哪个查询行需要使用新数据进行更新。由于我更新了第一行和第三行,并且它们的 queryRowNum 分别为 1 和 3,因此我预计在 uGrid.QueryRowNum 数组中会出现这种情况。

这个假设不正确吗?如果是这样,我怎么知道要更新哪个查询行?

这个服务器正在运行,我相信,CF9。

编辑

奇怪的是,我只是注意到我可以根据单击提交按钮时选择的单元格来更改未更改列中传递的内容。如果我选择我在第一行中更改的列并提交表单,那么一切正常。

4

1 回答 1

0

我也注意到了这种奇怪的行为。我还没有找到“html”格式的解决方案。我使用的解决方法是“闪存”格式。从 HTML 到 Flash 的一次更改会发送所有正确的数据。

<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>
于 2015-02-20T17:58:39.170 回答