ExtJs从widgetcolumn获取widget组件

时间:2014-09-06 04:22:24

标签: extjs components component-query

我在窗口中有组件。其中一个是网格,第一列是带有复选框小部件的小部件列。我在这个专栏的模型中没有字段,这个专栏就在我的视图中(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)

1 个答案:

答案 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);
                        }

                    }
                },
            }

        });