2009年7月29日 星期三

Ext.grid.rownumberer顯示錯亂的問題


小弟發現造成錯亂是因為自己沒有將view做refresh,應該在新增刪除後執行grid.view.refresh()。

-- 舊文章 --
在ext-js中的Ext.grid.rownumberer()常常會因為store的新增刪除造成數字錯亂,可以在grid中執行新增刪除的地方(如insertRows()/removeRow()),修改成每次執行後都要refresh()即可解決。
不過小弟也不知道這算不算是正解。

insertRows : function(dm, firstRow, lastRow, isUpdate){
    if(!isUpdate && firstRow === 0 && lastRow >= dm.getCount()-1){
        this.refresh();
    }else{
        if(!isUpdate){
            this.fireEvent("beforerowsinserted", this, firstRow, lastRow);
        }
        var html = this.renderRows(firstRow, lastRow);
        var before = this.getRow(firstRow);
        if(before){
            Ext.DomHelper.insertHtml('beforeBegin', before, html);
        }else{
            Ext.DomHelper.insertHtml('beforeEnd', this.mainBody.dom, html);
        }
        if(!isUpdate){
            this.fireEvent("rowsinserted", this, firstRow, lastRow);
            this.processRows(firstRow);
        }
    }
    this.syncFocusEl(firstRow);
},
改成
insertRows : function(dm, firstRow, lastRow, isUpdate){
    if(!(!isUpdate && firstRow === 0 && lastRow >= dm.getCount()-1)) {
        if(!isUpdate){
            this.fireEvent("beforerowsinserted", this, firstRow, lastRow);
        }
        var html = this.renderRows(firstRow, lastRow);
        var before = this.getRow(firstRow);
        if(before){
            Ext.DomHelper.insertHtml('beforeBegin', before, html);
        }else{
            Ext.DomHelper.insertHtml('beforeEnd', this.mainBody.dom, html);
        }
        if(!isUpdate){
            this.fireEvent("rowsinserted", this, firstRow, lastRow);
            this.processRows(firstRow);
        }
    }
    this.refresh();
    this.syncFocusEl(firstRow);
},


沒有留言:

張貼留言

熱門文章