我无法从我的JQGrid中删除一行,因为我无法弄清楚如何将我需要的数据发送到包含MySQL的文件。我正在使用ColdFusion。
在我的JQGrid文件中,我的editurl参数设置如下:
editurl: url+"process_delete.cfc?method=process_delete®ion="+region,
在我的process_delete.cfc文件中,我保存了我的MySQL查询,我有:
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”,所以也许这就是我的问题所在。
答案 0 :(得分:6)
您可以将delData
与属性field1
和field2
定义为函数,也可以使用onclickSubmit
或beforeSubmit
来动态修改在DELETE操作中使用URL
或使用serializeDelData
回调。最好的方法可能取决于您使用的其他选项(例如,取决于用于删除操作的mtype
)。在the answer中,我包含了对其他答案的引用,这些答案详细说明了所有方法。
例如,您可以使用
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
}
答案 1 :(得分: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
})
希望有所帮助!