JQgridcheckboxonclick更新数据库

我有一个在我的JqGrid中从数据库中加载的checkbox列,所以它被加载时检查或不检查。

我想要的是:如果checkbox正在被选中或未被用户选中,我想更新数据库中的相同。 我不希望用户按下input或任何东西。 只有1点击并发送操作到数据库

name:'Aktiv',index:'Aktiv',width:100,edittype:'checkbox',align:'center',formatter:“checkbox”,editable:true,formatoptions:{disabled:false}

您可以在loadComplete设置click事件处理程序:

 loadComplete: function () { var iCol = getColumnIndexByName ($(this), 'Aktiv'), rows = this.rows, i, c = rows.length; for (i = 1; i < c; i += 1) { $(rows[i].cells[iCol]).click(function (e) { var id = $(e.target).closest('tr')[0].id, isChecked = $(e.target).is(':checked'); alert('clicked on the checkbox in the row with id=' + id + '\nNow the checkbox is ' + (isChecked? 'checked': 'not checked')); }); } } 

哪里

 var getColumnIndexByName = function(grid, columnName) { var cm = grid.jqGrid('getGridParam', 'colModel'), i, l; for (i = 1, l = cm.length; i < l; i += 1) { if (cm[i].name === columnName) { return i; // return the index } } return -1; }; 

应该使用jQuery.ajax向服务器发送有关更改checkbox状态的信息,而不是alert

你可以在这里看到一个演示。

loadComplete:function()中的一个小的修正。 在演示中,您可以发现,即使在checkbox被选中后,如果您在该单元格的checkbox外单击,该值将从“true”更改为“false”。

为了避免这种情况,只需通过执行以下操作,仅将焦点对准checkbox。

 for (i = 1; i < c; i += 1) { $(('input[type="checkbox"]'),rows[i].cells[iCol]).click(function (e) { var id = $(e.target).closest('tr')[0].id, isChecked = $(e.target).is(':checked'); alert('clicked on the checkbox in the row with id=' + id + '\nNow the checkbox is ' + (isChecked? 'checked': 'not checked')); }); } 

谢谢你的回答:-)(@Oleg)帮了我很多..当然..;)

根据checkbox的点击更改其他列的值

 var weightedAvgPriceIndex = getColumnIndexByName($(this), 'WeightedAveragePrice'), rows = this.rows, i, c = rows.length; for (i = 1; i < c; i += 1) { $(('input[type="checkbox"]'),rows[i].cells[iCol]).click(function (e) { var id = $(e.target).closest('tr')[0].id; isChecked = $(e.target).is(':checked'); var x = $('#' + id + ' td:eq(' + weightedAvgPriceIndex + ')').text(); $('#' + id + ' td:eq(' + weightedAvgPriceIndex + ')').text(Math.abs(x) + 10); }); }