2

我在窗口中有组件。其中一个网格是第一列是带有复选框小部件的小部件列。我在此列的模型中没有字段,此列仅在我的视图中(Ext.grid.View)。

我的小部件列

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);

更新

这让我小部件列:

Ext.ComponentQuery.query('widgetcolumn',editGrid)
4

1 回答 1

2

我在论坛中找到了 onWidgetAttach(widget,record)。(它还没有记录在 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);
                        }

                    }
                },
            }

        });
于 2014-09-06T05:54:43.497 回答