事件 beforecheckchange 不会在 extJS 版本 4.1.1 中触发
Event beforecheckchange doesn't fire in extJS version 4.1.1
我有一个 extJS fiddle,它会在单击复选框时提醒用户。
代码如下:
Ext.application({
name : 'Fiddle',
launch : function() {
var myStore = Ext.create('Ext.data.Store',{
data: [
{
name: 'ex',
oldUser: 'Y'
},
{
name: 'ea',
oldUser: 'N'
}
],
fields: [
{
name: 'name'
},
{
name: 'oldUser'
}
]
});
Ext.create('Ext.grid.Panel', {
height: 250,
width: 579,
title: 'My Grid Panel',
renderTo: Ext.getBody(),
defaultListenerScope: true,
store: myStore,
columns: [
{
xtype: 'gridcolumn',
dataIndex: 'name',
text: 'Name'
},
{
xtype: 'checkcolumn',
dataIndex: 'oldUser',
text: 'OldUser',
listeners: {
// problem here!
beforecheckchange: function(checkcolumn, rowIndex, checked, eOpts) { alert("asd"); }
}
}
]
});
}
});
当我使用 extjs 4.2.0 及更高版本时,beforecheckchange 事件将触发,但当我使用 extjs 4.1.1 及之前的版本时,它不会触发。
但是当我检查 api 文档的版本 4.1.1 时,beforecheckchange 被列为我可以使用的事件。
我想知道为什么上面的例子不适用于 4.1.1
看来您必须手动添加 CheckColumn:
var myCheckColumn = Ext.create('Ext.ux.CheckColumn',{
text: 'OldUser',
dataIndex: 'oldUser',
listeners: {
beforecheckchange: function(checkcolumn, rowIndex, checked, eOpts) { alert(checked); }
}
});
试试这个 fiddle:
Ext.application({
name : 'Fiddle',
launch : function() {
Ext.Loader.setConfig({enabled:true});
var myStore = Ext.create('Ext.data.Store',{
data: [
{
name: 'ex',
oldUser: true
},
{
name: 'ea',
oldUser: false
}
],
fields: [
{
name: 'name'
},
{
name: 'oldUser'
}
]
});
var myCheckColumn = Ext.create('Ext.ux.CheckColumn',{
text: 'OldUser',
dataIndex: 'oldUser',
listeners: {
beforecheckchange: function(checkcolumn, rowIndex, checked, eOpts) { alert(checked); }
}
});
Ext.create('Ext.grid.Panel', {
height: 250,
width: 579,
title: 'My Grid Panel',
renderTo: Ext.getBody(),
defaultListenerScope: true,
store: myStore,
columns: [
{
xtype: 'gridcolumn',
dataIndex: 'name',
text: 'Name'
},
myCheckColumn
]
});
}
});
但是,呈现复选框可能会出现问题。在 CheckHeader.css 中更改背景图像或创建新的并将其添加到应用程序中。
CheckHeader.css:
.x-grid-checkheader {
height: 14px;
background-image: url('images/unchecked.gif');
background-position: 50% -2px;
background-repeat: no-repeat;
background-color: transparent;
}
.x-grid-checkheader-checked {
background-image: url('images/checked.gif');
}
.x-grid-checkheader-editor .x-form-cb-wrap {
text-align: center;
}
我有一个 extJS fiddle,它会在单击复选框时提醒用户。
代码如下:
Ext.application({
name : 'Fiddle',
launch : function() {
var myStore = Ext.create('Ext.data.Store',{
data: [
{
name: 'ex',
oldUser: 'Y'
},
{
name: 'ea',
oldUser: 'N'
}
],
fields: [
{
name: 'name'
},
{
name: 'oldUser'
}
]
});
Ext.create('Ext.grid.Panel', {
height: 250,
width: 579,
title: 'My Grid Panel',
renderTo: Ext.getBody(),
defaultListenerScope: true,
store: myStore,
columns: [
{
xtype: 'gridcolumn',
dataIndex: 'name',
text: 'Name'
},
{
xtype: 'checkcolumn',
dataIndex: 'oldUser',
text: 'OldUser',
listeners: {
// problem here!
beforecheckchange: function(checkcolumn, rowIndex, checked, eOpts) { alert("asd"); }
}
}
]
});
}
});
当我使用 extjs 4.2.0 及更高版本时,beforecheckchange 事件将触发,但当我使用 extjs 4.1.1 及之前的版本时,它不会触发。
但是当我检查 api 文档的版本 4.1.1 时,beforecheckchange 被列为我可以使用的事件。
我想知道为什么上面的例子不适用于 4.1.1
看来您必须手动添加 CheckColumn:
var myCheckColumn = Ext.create('Ext.ux.CheckColumn',{
text: 'OldUser',
dataIndex: 'oldUser',
listeners: {
beforecheckchange: function(checkcolumn, rowIndex, checked, eOpts) { alert(checked); }
}
});
试试这个 fiddle:
Ext.application({
name : 'Fiddle',
launch : function() {
Ext.Loader.setConfig({enabled:true});
var myStore = Ext.create('Ext.data.Store',{
data: [
{
name: 'ex',
oldUser: true
},
{
name: 'ea',
oldUser: false
}
],
fields: [
{
name: 'name'
},
{
name: 'oldUser'
}
]
});
var myCheckColumn = Ext.create('Ext.ux.CheckColumn',{
text: 'OldUser',
dataIndex: 'oldUser',
listeners: {
beforecheckchange: function(checkcolumn, rowIndex, checked, eOpts) { alert(checked); }
}
});
Ext.create('Ext.grid.Panel', {
height: 250,
width: 579,
title: 'My Grid Panel',
renderTo: Ext.getBody(),
defaultListenerScope: true,
store: myStore,
columns: [
{
xtype: 'gridcolumn',
dataIndex: 'name',
text: 'Name'
},
myCheckColumn
]
});
}
});
但是,呈现复选框可能会出现问题。在 CheckHeader.css 中更改背景图像或创建新的并将其添加到应用程序中。
CheckHeader.css:
.x-grid-checkheader {
height: 14px;
background-image: url('images/unchecked.gif');
background-position: 50% -2px;
background-repeat: no-repeat;
background-color: transparent;
}
.x-grid-checkheader-checked {
background-image: url('images/checked.gif');
}
.x-grid-checkheader-editor .x-form-cb-wrap {
text-align: center;
}