【问题标题】:Free Jqgrid and custom formatter checkbox免费的 Jqgrid 和自定义格式化程序复选框
【发布时间】:2015-05-27 11:48:17
【问题描述】:

当我点击最后一列复选框时,没有任何反应。

//$.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);
}

演示请见http://jsfiddle.net/9ezy09ep/22/

【问题讨论】:

    标签: jqgrid free-jqgrid


    【解决方案1】:

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

    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+')" /> ';
    }
    

    其中变量idrow 未声明。您应该使用" checked='checked'" 而不是"checked='checked'"

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

    window.senddata_094 = function (id) {
        ...
    }
    

    senddata_094 = function (id){
        ...
    }
    

    其中senddata_094 未定义。

    而不是

    function senddata_094 (id){
        ...
    }
    

    下一个问题:在senddata_094 中使用idelem 变量。

    顺便说一句,您可以将' onchange="senddata_094('+idrow+')" /&gt; ' 更改为' onchange="senddata_094.call(this,'+idrow+')" /&gt; '。它将在senddata_094 内初始化this 到复选框。您可以在 senddata_094 函数中使用 $(this) 代替 $('#prel_'+id)。因此,您无需在复选框上设置任何 id 属性。

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

    $("#jqGrid").bind("change", function (e) {
        var rowid = $(e.target).closest("tr.jqgrow").attr("id");
        alert("changed id=" + rowid);
    });
    

    【讨论】:

    • 在旧版本 4.7.0 中,此代码还可以,但在免费 jqgrid 中,单击复选框时不起作用。复选框未激活但未激活。
    • @DavidO.:你应该清楚地表达你的问题。代码应该做什么?您发布了 onchange 根本没有执行的代码,因为它被定义为 local function 。您在“复选框未激活”下的意思是什么?我没有看到它被禁用。您是否希望在单击后检查复选框保持选中状态?对不起,但问一些简短的问题可以节省你的时间,但要花我的时间。你能把你的问题表述得更清楚吗?
    • 是的,我想在单击后选中或在更改单击后取消选中。
    • @DavidO.:感谢您报告错误。我测试了代码,找到了原因:我最近做的the changes。我回复了the changes。您应该刷新从 github 使用的代码。请在以后更准确地描述您的问题。它可以节省我很多时间。
    • 问题出在免费 jqgrid 的当前版本中。如果我使用 jqgrid 的选项 multiselect:true 并单击复选框 cb_jqgrid,则选择行,但在取消选择 cb_jqgrid 时,不会取消选择行。
    猜你喜欢
    • 1970-01-01
    • 2016-06-20
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多