免费Jqgrid和自定义格式化程序复选框

免费Jqgrid和自定义格式化程序复选框,jqgrid,free-jqgrid,Jqgrid,Free Jqgrid,当我点击最后一列复选框时,什么也没发生 //$.fn.jqm = false; $.jgrid.jqModal = $.jgrid.jqModal || {}; $.extend(true, $.jgrid.jqModal, {toTop: true}); $("#Ecran").dialog({ //dialogClass: 'Ecran', autoOpen: false, width: 560, height: 370, modal: true,

当我点击最后一列复选框时,什么也没发生

//$.fn.jqm = false;
$.jgrid.jqModal = $.jgrid.jqModal || {};
$.extend(true, $.jgrid.jqModal, {toTop: true});

$("#Ecran").dialog({
    //dialogClass: 'Ecran',
    autoOpen: false,
    width: 560,
    height: 370,
    modal: true,
    open: function (event, ui) {
        $("#jqGrid").jqGrid({
            url: 'http://trirand.com/blog/phpjqgrid/examples/jsonp/getjsonp.php?callback=?&qwery=longorders',
            mtype: "GET",
            datatype: "jsonp",
            colModel: [
                { label: 'OrderID', name: 'OrderID', key: true, width: 75 },
                { label: 'Customer ID', name: 'CustomerID', width: 150 },
                { label: 'Order Date', name: 'OrderDate', width: 150 },
                { label: 'Freight', name: 'Freight', width: 150 },
                { label:'Ship Name', name: 'ShipName', width: 150 },
                {name:'ok',index:'ok', width:60,formatter:danu_094,align:'center',search:false}
            ],
            cmTemplate: { width: 80, autoResizable: true },
            autoResizing: { compact: true },
            autoresizeOnLoad: true,
            height: "auto",
            viewrecords: true,
            rownumbers:true,
            //width: 480,
            height: "200",
            rowNum: 30,
            rowList:[5,10,20,30,35],
            pager: "#jqGridPager"
        }).jqGrid("navGrid", { del: true, add: false, edit: false });
    },
    close:function () {}
});
$("#Ecran").dialog("open");

function danu_094 (val, options){
  idrow=options.rowId;
  var checked=(val == 'T') ? "checked='checked'" : "";
  return '<input type="checkbox"' + checked  + ' value="'+ val+ '" id='+ 'prel_'+idrow+' onchange="senddata_094('+idrow+')" /> ';
}

function senddata_094 (id){  //alert(id);
  idelem=$('#prel_'+id);
  if ((idelem).is(':checked'))   idelem.val('T');
  else idelem.val('F');
  var sqldate = "&id="+id+"&preluat="+idelem.val();
  alert(sqldate);
}
/$.fn.jqm=false;
$.jgrid.jqModal=$.jgrid.jqModal | |{};
$.extend(true,$.jgrid.jqModal,{toTop:true});
$(“#Ecran”)。对话框({
//dialogClass:'Ecran',
自动打开:错误,
宽度:560,
身高:370,
莫代尔:是的,
打开:功能(事件、用户界面){
$(“#jqGrid”).jqGrid({
网址:'http://trirand.com/blog/phpjqgrid/examples/jsonp/getjsonp.php?callback=?&qwery=longorders',
mtype:“获取”,
数据类型:“jsonp”,
colModel:[
{label:'OrderID',name:'OrderID',key:true,width:75},
{标签:“客户ID”,名称:“CustomerID”,宽度:150},
{标签:“订单日期”,名称:“订单日期”,宽度:150},
{标签:'运费',名称:'运费',宽度:150},
{标签:'Ship Name',名称:'Ship Name',宽度:150},
{name:'ok',index:'ok',width:60,格式化程序:danu_094,align:'center',search:false}
],
cmTemplate:{宽度:80,自动调整大小:true},
自动调整大小:{compact:true},
autoresizeOnLoad:正确,
高度:“自动”,
viewrecords:是的,
行数:对,
//宽度:480,
高度:“200”,
rowNum:30,
行列表:[5,10,20,30,35],
寻呼机:“jqGridPager”
}).jqGrid(“navGrid”,{del:true,add:false,edit:false});
},
关闭:函数(){}
});
$(“#Ecran”)。对话框(“打开”);
功能danu_094(val,选项){
idrow=options.rowId;
var checked=(val='T')?“checked='checked'”:;
返回“”;
}
函数senddata_094(id){//alert(id);
idelem=$('prel'+id);
if((idelem).is(':checked'))idelem.val('T');
else idelem.val('F');
var sqldate=“&id=“+id+”&preluat=“+idelem.val()”;
警报(sqldate);
}

有关演示,请参见

不清楚您想对代码执行什么操作。无论如何,它包含许多错误。例如,您使用

功能danu_094(val,选项){
idrow=options.rowId;
var checked=(val='T')?“checked='checked'”:;
返回“”;
}
其中未声明变量
idrow
。您应该使用
“checked='checked'”
而不是
“checked='checked'”

下一个问题:
senddata_094
需要定义为全局函数。所以你必须使用例如

window.senddata_094=函数(id){
...
}

senddata_094=函数(id){
...
}
其中未定义中的
senddata_094

而不是

函数senddata_094(id){
...
}
下一个问题:在
senddata\u 094
中使用
idelem
变量

顺便说一下,您可以将
'onchange=“senddata”094(“+idrow+”)“/>”更改为
'onchange=“senddata”094。调用(此,“+idrow+”)“/>”
。它将在
senddata_094
复选框内初始化
。您可以在
senddata_094
功能中使用
$(this)
而不是
$(''prel'+id)
。因此,您不需要在复选框上设置任何
id
属性

同样,您根本不需要设置任何
onchange
属性。相反,您可以在网格级别定义
change
事件。由于事件冒泡,将调用事件处理程序:

$(“#jqGrid”).bind(“change”,函数(e){
var rowid=$(e.target).closest(“tr.jqgrow”).attr(“id”);
警报(“更改的id=“+rowid”);
});

在旧版本4.7.0中,此代码正常,但在免费jqgrid中,单击复选框时不起作用。复选框未激活但未激活。@DavidO:您应该清除您的问题。代码应该做什么?您在
onchange
没有执行的地方发布了代码,因为它被定义为本地函数。“复选框未激活”下的含义是什么?我看不出它是禁用的。是否希望在单击后复选框保持选中状态?对不起,问一些简短的问题可以节省你的时间,但可以花我的时间。你能把你的问题说得更清楚些吗?是的,我想在单击后检查,或者在更改单击后取消检查。@DavidO:谢谢你的错误报告。我测试了代码并找到了原因:这是我最近做的。我回过头来。您应该刷新从github使用的代码。今后请更准确地描述您的问题。这可以节省我很多时间。问题在于当前版本的免费jqgrid。如果我使用选项multiselect:true of jqgrid并单击复选框cb_jqgrid,则行被选中,但在取消选中的cb_jqgrid中,行不会被取消选中。