我在窗口中有组件。其中一个是网格,第一列是带有复选框小部件的小部件列。我在这个专栏的模型中没有字段,这个专栏就在我的视图中(Ext.grid.View)。
我的widgetcolumn
editGrid.columns.push({
xtype: 'widgetcolumn',
widget: {
xtype: 'checkbox',
listeners: {
change: function (checkbox, newValue) {
var checkedRecordId= checkbox.getWidgetRecord().getId();
//when checkbox click, add/remove record id in/from array.
if (newValue) {
editGrid.checkedEstimationIds.push(checkedRecordId);
} else {
Ext.Array.remove(editGrid.checkedEstimationIds, checkedRecordId);
}
}
}
}
});
在分页之间我想要获取复选框列(widgetcolumn)并检查它们取决于数组,我的商店和它的回调函数:
editGrid.store.on('load', function (store, records) {
// checked boxes depend on checkedArrayIds
// how get check boxes???
for (i in records) {
if (Ext.Array.contains(editGrid.checkedEstimationIds, records[i].id)) {
//var row = editGrid.getView().getRow(parseInt(i),)//doesn't work;
var gridView = editGrid.getView()
var checkboxes = Ext.ComponentQuery.query('checkbox',gridView);
}
}
});
我想获取此列并根据一组id检查它们。如何获取extjs复选框组件?我尝试这个但是不起作用:
var gridView = editGrid.getView()
var checkboxes = Ext.ComponentQuery.query('checkbox',gridView);
更新
这让我得到widgetcolumn:
Ext.ComponentQuery.query('widgetcolumn',editGrid)
答案 0 :(得分:1)
我在forum中找到了 onWidgetAttach(小部件,记录)。(它尚未在api文档中记录),所以:
editGrid.columns.push({
xtype: 'widgetcolumn',
onWidgetAttach: function (widget, record) {
if (Ext.Array.contains(editGrid.checkedEstimationIds, records)) {
widget.setValue(true);
}
},
widget: {
xtype: 'checkbox',
listeners: {
change: function (checkbox, newValue) {
var checkedRecordId= checkbox.getWidgetRecord().getId();
if (newValue) {
editGrid.checkedEstimationIds.push(checkedRecordId);
} else {
Ext.Array.remove(editGrid.checkedEstimationIds, checkedRecordId);
}
}
},
}
});