1

我无法从我的 JQGrid 中删除一行,因为我不知道如何将我需要的数据发送到保存 MySQL 的文件。我正在使用 ColdFusion。

在我的 JQGrid 文件中,我的 editurl 参数设置如下:

editurl: url+"process_delete.cfc?method=process_delete&region="+region,

在包含我的 MySQL 查询的 process_delete.cfc 文件中,我有这个:

DELETE FROM awesome_table
WHERE region = '#region#' AND Field1 = '??????' AND Field2 = '???????'

我知道 MySQL 正在被访问——那里没有问题。此外,该区域也可以从 URL 中很好地填充。那里没有问题。问题是我无法弄清楚如何访问我试图删除的行中的数据以填充 Field1 和 Field2,从而有效地完成查询。任何人都可以帮忙吗?谢谢。

对于删除,我有以下代码:

jQuery.jgrid.del = {
            caption: "Delete Item",
            msg: "Delete record?",
            bSubmit: "Delete",
            bCancel: "Cancel",
            beforeSubmit: function(postdata, formid) { 
                var rowid = $("#mygrid").getGridParam('selrow');
                $("#mygrid").jqGrid('saveRow',rowid,false,'clientArray');
                var rowvalues = $("#mygrid").getRowData(rowid);
                return [true, ""]
            }

当我rowid在警报消息框中显示时,我得到“null”,所以也许这就是我的问题所在。

4

2 回答 2

6

您可以使用delData与属性field1field2定义为函数或使用onclickSubmitbeforeSubmit在其中您可以动态修改URLDELETE 操作中使用的或使用serializeDelData回调。最好的方法可能取决于您使用的其他选项(例如取决于mtype用于删除操作)。在答案中,我包括了对其他答案的引用,这些答案详细显示了所有方法。

例如,您可以使用

onclickSubmit: function (options, rowid) {
    // we suppose that use don't use multiselect: true option
    // in the case rowid parameter if the string with the id of the
    // deleted row

    // we can get the data about the deleted row with respect of
    // getCell, getLocalRow or getRowData methods
    var rowData = $(this).jqGrid("getRowData", rowid);

    // now we can modify the URL used in the Delete operation
    options.url += "?" + $.param({
        field1: rowData.field1,
        field2: rowData.field2
    });

    return {}; // you can return additional data which will be sent to the server
}
于 2012-09-08T12:49:36.330 回答
0

如果没有看到从 CFC 返回以填充网格的代码,则真的无济于事。但是,一种方法是访问行的 id 并将其放入一些 HTML 元素中,例如锚标记,例如:

如果您正在创建一个循环来准备数据

//Some loop
<cfset dataRows[i]['id'] = #yourqueryId# />
<cfset dataRows[i]['cell'] = "<a href="##" class="delete" id="#yourqueryId#">Delete</a>" />

然后将 JSON 对象传递给 CFM 文件

 <cfset JSONReturn = {total=#totalPages#,page=#page#,records=#recordcount#,rows=dataRows} />

然后在显示网格的页面中添加一个处理锚标记点击的事件

$('a.delete').on('click', function(){
    var id = $(this).attr('id');
    //do something with the id
})

希望有帮助!

于 2012-09-08T04:07:30.927 回答