jqGrid - 禁用单独的内联复选框?

时间:2015-02-11 22:52:51

标签: jqgrid

我有一个网格,其中一列有

  

... formatter:'复选框',编辑类型:'复选框',formatoptions:{disabled:false}

我想根据同一行的其他列切换已禁用值。结果将是一个带有一些启用和一些禁用复选框的网格。

这可能吗?

我尝试在 formatoptions 值中添加一个函数 - formatoptions: { disabled: somefunction()},但它只在表加载时调用一次,并且似乎不接受任何参数。

2 个答案:

答案 0 :(得分:3)

我建议您使用custom formatter或注册the answerthis one中描述的自定义格式化程序,并调用原始自定义格式化程序 它:

(function ($) {
    "use strict";
    $.extend($.fn.fmatter, {
        yourFormatterName: function (cellValue, options,
                rowObject, action) {

            // call formatter: "checkbox"
            return $.fn.fmatter.call(this, "checkbox",
                cellValue, options, rowObject, action);
        }
    });
    $.extend($.fn.fmatter.yourFormatterName, {
        unformat: function (cellValue, options, elem) {
            var cbv = (options.colModel.editoptions != null &&
                        typeof options.colModel.editoptions.value === "string") ?
                            options.colModel.editoptions.value.split(":") :
                            ["Yes","No"];
            ret = $("input", elem).is(":checked") ? cbv[0] : cbv[1];
        }
    });
}(jQuery));

您可以在调用原始格式化程序之前更改options.colModel 的任何属性

yourFormatterName: function (cellValue, options, rowObject, action) {
    var myValue = true, // or false value DYNAMICALLY
        newOptions = $.extend(true, {
                colModel: { formatoptions: { disabled: myValue } }
            },
            options);
    return $.fn.fmatter.call(this, "checkbox", cellValue, newOptions, rowObject,
        action);
}

其中

答案 1 :(得分:1)

之前我遇到过这个问题。我没有在formatoptions中实现自定义函数,而是在loadComplete事件中循环网格的每一行,并根据另一列的值启用/禁用复选框。检查this

第三列中的所有复选框均基于第二列Name列的值。