日期:2014-05-16  浏览次数:20342 次

ExtJs 中的TreeGrid(Ext.ux.maximgb.tg.EditorGridPanel详解与其他问题解决办法)2
Ext.ux.maximgb.tg.EditorGridPanel


所形成的树形表格,如果当右侧数据更改后,会出现节点位置偏(左)移,这要怎么解决了,

解决方法:

?? 在引入的js文件TreeGrid.js中,只要重写这些方法即可:

?

    onAdd : function(ds, records, index)
    {
        Ext.ux.maximgb.tg.GridView.superclass.onAdd.call(this, ds, records, index);
        if (this.mainWrap) {
           //this.updateAllColumnWidths();
           this.processRows(0);
        }
    },
    
    onRemove : function(ds, record, index, isUpdate)
    {
        Ext.ux.maximgb.tg.GridView.superclass.onRemove.call(this, ds, record, index, isUpdate);
        if(isUpdate !== true){
            if (this.mainWrap) {
                //this.updateAllColumnWidths();
                this.processRows(0);
            }
        }
    },
    
    onUpdate : function(ds, record)
    {
        Ext.ux.maximgb.tg.GridView.superclass.onUpdate.call(this, ds, record);
        if (this.mainWrap) {
            //this.updateAllColumnWidths();
            this.processRows(0);
        }
    },

? 在每个方法中加入以下代码即可:

this.grid.view.refresh();

?

?重写后为:

 onAdd : function(ds, records, index)
    {
        Ext.ux.maximgb.tg.GridView.superclass.onAdd.call(this, ds, records, index);
        if (this.mainWrap) {
           //this.updateAllColumnWidths();
           this.processRows(0);
           //  add 
           this.grid.view.refresh();
?        }
    },
    
    onRemove : function(ds, record, index, isUpdate)
    {
        Ext.ux.maximgb.tg.GridView.superclass.onRemove.call(this, ds, record, index, isUpdate);
        if(isUpdate !== true){
            if (this.mainWrap) {
                //this.updateAllColumnWidths();
                this.processRows(0);
           		//  add 
          		 this.grid.view.refresh();
            }
        }
    },
    
    onUpdate : function(ds, record)
    {
        Ext.ux.maximgb.tg.GridView.superclass.onUpdate.call(this, ds, record);
        if (this.mainWrap) {
            //this.updateAllColumnWidths();
            this.processRows(0);
           //  add 
           this.grid.view.refresh();            
        }
    },
?

?? 即在添加、删除、更改后,刷新一遍即可!

?

?? 另外在Grid中有时候会统计所有子节点的值进行汇总时,store中只有query()方法,但有时会有问题,出现统计子节点出现计算错误:

?var mixedCollection=s.queryExact("_parent",record.get("_id"));

?这个时候就要重写store中原的的方法query了:

??? store中原有方法query为:

    query : function(property, value, anyMatch, caseSensitive){
        var fn = this.createFilterFn(property, value, anyMatch, caseSensitive);
        return fn ? this.queryBy(fn) : this.data.clone();
    },

? 重写query方法,改名后(queryExact --自定义)为:

Ext.override(Ext.data.Store,{
    
    queryExact : function(property, value, anyMatch, caseSensitive){
        var fn = this.createFilterFn(property, value, anyMatch, caseSensitive, true);
        return fn ? this.queryBy(fn) : this.data.clone();
    }
});
?

?

?

?

1 楼 008zlj 2011-11-05  
请问有treegrid的demo吗?
008zlj@163.com
2 楼 008zlj 2011-11-05  
谢谢你哈!!!
3 楼 Inspiration 2012-02-02  
能不能给我发一个DEMO
chengxiangwu@sohu.com