我有一个网格,其中一列有
... formatter:'复选框',编辑类型:'复选框',formatoptions:{disabled:false}
我想根据同一行的其他列切换已禁用值。结果将是一个带有一些启用和一些禁用复选框的网格。
这可能吗?
我尝试在 formatoptions 值中添加一个函数 - formatoptions: { disabled: somefunction()}
,但它只在表加载时调用一次,并且似乎不接受任何参数。
答案 0 :(得分:3)
我建议您使用custom formatter或注册the answer或this 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
列的值。