Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ExtJS 4,自定义Ext.grid.Panel的布尔列值_Javascript_Extjs_Extjs4 - Fatal编程技术网

Javascript ExtJS 4,自定义Ext.grid.Panel的布尔列值

Javascript ExtJS 4,自定义Ext.grid.Panel的布尔列值,javascript,extjs,extjs4,Javascript,Extjs,Extjs4,您好,我有一个带有布尔列的网格: var grid = Ext.create('Ext.grid.Panel', { ... columns: [{ dataIndex: 'visibleForUser', text: 'Visible', editor: { xtype: 'checkboxfield', inputValue: 1 // <

您好,我有一个带有布尔列的网格:

 var grid = Ext.create('Ext.grid.Panel', {
      ...
      columns: [{
           dataIndex: 'visibleForUser',
           text: 'Visible',
           editor: {
              xtype: 'checkboxfield',
              inputValue: 1 // <-- this option has no effect
           }
      },
      ...
如您所见,ExtJS将复选框值序列化为
true
false
JSON术语。
我需要对此进行定制并序列化,比如说,
1
0
,有什么建议如何实现这一点吗?谢谢。

您可以尝试覆盖getValue

Ext.define('Ext.form.field.Checkbox', {
    override : 'Ext.form.field.Checkbox',
    getValue: function () {
        return this.checked ? 1 : 0;
    }
});

我刚刚将系统范围内的复选框更改为始终对
0
1
进行操作/响应:

Ext.onReady(function(){
    // Set the values of checkboxes to 1 (true) or 0 (false), 
    // so they work with json and SQL's BOOL field type
    Ext.override(Ext.form.field.Checkbox, { 
        inputValue: '1',
        uncheckedValue: '0'
    });
});

但您可以只添加此“按配置”复选框。

Ext JS 4.1.1在记录字段上有一个新的
序列化
配置。当编写器准备记录数据时,将调用serialize方法来生成输出值,而不仅仅是获取实际字段值。所以你可以这样做:

fields: [{
    name: "visibleForUser",
    type: "boolean",
    serialize: function(v){
        return v ? 1 : 0;
    }
    /* other fields */
}]

我尽可能避免覆盖默认组件行为。正如我所提到的,这只在4.1.1中起作用(它是在4.1.0中引入的,但我相信它已经坏了)。因此,如果您使用的是早期版本,其他答案中的一个会更适合您。

我上周也遇到了同样的问题。checkboxfield接受true、'true','1','on',但只返回布尔值!我认为您必须重写checkboxfield类才能实现这一点。感谢您的回答,由于某些原因,此解决方案没有适用于ExtJS 4.1.0和4.1.1。我只是用4.1.1进行了尝试,效果很好。您是如何指定字段的?谢谢您的回答,但由于某些原因,此解决方案没有针对ExtJS 4.1.0和4.1.1进行标记,我在json中仍然有“true/false”
fields: [{
    name: "visibleForUser",
    type: "boolean",
    serialize: function(v){
        return v ? 1 : 0;
    }
    /* other fields */
}]