Кнопка удаления cfGrid обновляет сетку и не удаляет строки

У нас есть настройка cfGrid, которая включает кнопку удаления. Остальная функциональность сетки, загрузка данных из загруженной электронной таблицы и редактирование данных - все работает отлично. Однако кнопка удаления ведет себя очень странно. Он не удаляет строку и, кажется, отменяет все обновления, которые мы внесли в сетку.

Вот некоторые фрагменты соответствующих частей кода:

    <script>
        <!--- This converts the query (which was generated by the XLS file) into a WDDX object, which can be easily edited by JS and easily serialized for submission to the processing cfm. --->
        <cfwddx action="cfml2js" input="#xlsData#" topLevelVariable="xlsData"> 

        <!--- Each time the grid is updated this JS function updates the WDDX object in memory. --->
        function gridChange(cfgridaction, cfgridrow, cfgridchanged) {
            for (var element in cfgridchanged) {
                xlsData.setField(cfgridrow.CFGRIDROWINDEX-1, element, cfgridchanged[element])
            }
        }

        <!--- Upon submission we serialize the WDDX object into a string, add it to a hidden form field, and then pass it to the processing template to be inserted into the database. --->
        function storeArrayForSubmit() {
            wddxSerializer = new WddxSerializer(); 
            wddxPacket = wddxSerializer.serialize(xlsData); 
            document.getElementById('gridData').value = wddxPacket;
            document.getElementById('updateForm').submit();
        }
    </script>


    <!--- This form is only for the grid.  We do not keep everything in the same form as we would then be double submitting data, once in the grid and once in the WDDX string. --->
    <cfform action="">
        <cfgrid name="thisGrid"
            format="html" 
            query="xlsData"
            title="Edit Uploaded Data" 
            striperows="yes"
            selectmode="edit"
            delete="yes"
            onchange="javaScript:gridChange({cfgridaction},
                                 {cfgridrow},
                                 {cfgridchanged})">
                <cfloop list="#gridColumns#" index="fieldName">
                    <cfgridcolumn name="#fieldName#" header="#fieldName#" width="200" select="Yes" />
                </cfloop>
       </cfgrid>

       <p>
       <input type="button" value="Save Changes" name="submit" onClick="storeArrayForSubmit();" />
    </cfform>

    <!--- This form actually submits the data to the action page --->
    <form id="updateForm" action="manualUploadComplete.cfm" method="post">
        <input type="hidden" id="uploadedFileName"  name="uploadedFileName"     value="#uploadedFileName#" />
        <input type="hidden" id="table"             name="table"                value="#form.table#" />
        <input type="hidden" id="columnList"        name="columnList"           value="#form.columnList#" />
        <input type="hidden" id="tableColumnList"   name="tableColumnList"      value="#form.tableColumnList#" />
        <input type="hidden" id="primaryKeyList"    name="primaryKeyList"       value="#form.primaryKeyList#" />
        <input type="hidden" id="gridData"          name="gridData"             value="" />
    </form>

На этом этапе нет базы данных. Файл xls был загружен и прочитан, эти данные отображаются на экране для редактирования, а затем мы сразу отправим все на следующую страницу, которая выполнит все вставки и обновления базы данных.

При нажатии кнопки удаления строка отменяется, но не удаляется из сетки. Все обновления, сделанные в сетке, возвращаются к тому моменту, когда сетка загружается впервые. Но данные в объекте wddx сохраняют обновления, поэтому правильные данные отправляются на страницу действий.

0 ответов

Другие вопросы по тегам