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

ExtJs 3.2下GridPanel排序问题
ExtJs 3.2下GridPanel最下面两行不参与排序,有没有知道怎么实现的啊,因为我是通过后台增加了小计、合计,其他列默认为空,但是其他列中如果也有空值,排序后,小计、合计的顺序就乱了,可能就在中间了,有没有方法让gridpanel最后两行不参与排序的方法或者是另外的实现的方式啊,请高手帮帮忙啊
extjs grid gridpanel 排序

------解决方案--------------------
给最后两行加上标志字段,然后重写排序算法,发现有标志字段的就直接返回相等(无论是正序还是逆序,相等都不会交换)

Ext.data.Store.prototype.applySort = function() {
    var fn = function(r1,r2){//r1和r2表示行对象
        var s = this.sortInfo, f = s.field;
        var st = this.fields.get(f).sortType;
        var fn = function(r1, r2) {         
        var v1 = st(r1.data[f]), v2 = st(r2.data[f]);
        if(v1.mask 
------解决方案--------------------
 v2.mask) return 0;//如果排序的行中某一行有标志,则不交换次序
        return v1>v2?1:(v1<v2?0:1);//这是自己的排序算法,你可以按需要写
    }
    this.data.sort(s.direction, fn);
    if(this.snapshot && this.snapshot != this.data) {
        this.snapshot.sort(s.direction, fn);
    }
}