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); }); }