2012-07-25 47 views
2

在我的網格上我正在使用rowediting。extjs 4.1頁面滾動到網格頂部在行更新的Internet Explorer中

如果使用Internet Explorer 10(可能是其他版本太)和頁面有滾動條

當我編輯一行,然後單擊「更新」頁面滾動到電網的開始。

這個問題在(雖然沒有專門針對4.1)上有很好的記錄。

我見過固定的覆蓋rowModel這樣

Ext.override(Ext.selection.RowModel, { 
    onRowMouseDown: function(view, record, item, index, e) { 
//  view.el.focus(); 
     this.selectWithEvent(record, e); 
    } 
}); 

我也看到添加以下電網。

selModel: Ext.create('Ext.selection.Model', { listeners: {} }), 

這些選項都不適用於我。

  • 編輯*

我已經試過:如下建議 「preserveScrollOnRefresh真」。但問題仍然存在。我在Dropbox上放了一個例子。要在Internet Explorer中重新創建此項,您需要最小化瀏覽器並單擊/編輯需要網格頁腳的項目。

https://www.dropbox.com/s/l50d12t3cjq8kef/scrolling.htm

回答

4

的標準功能爲我的作品:

Ext.define('My.Grid', { 
    extend: 'Ext.grid.Panel', 

    viewConfig: { 
     preserveScrollOnRefresh: true 
    } 
}); 
+0

+1這個答案。在Chrome和FF中,我也遇到了4.1和4.1.1中的相同問題。但是這有所幫助。 – devOp 2012-09-05 14:47:03

+0

感謝您的意見。看起來很正確。雖然它仍然無法在Internet Explorer上運行。 – frosty 2012-09-12 10:37:54

+0

它在IE 9和Chrome上爲我工作 – 2012-12-14 19:58:59

1

在您使用CellModel或與其他解決方案有問題的情況下,這個解決方案應該工作:

Ext.override(Ext.dom.Element, { 
    focus: function (defer, dom) { 
     var me = this, 
      scrollTop, 
      body; 

     dom = dom || me.dom; 
     body = (dom.ownerDocument || DOC).body || DOC.body; 
     try { 
      if (Number(defer)) { 
       Ext.defer(me.focus, defer, me, [null, dom]); 
      } else { 
       if (dom.tagName != 'DIV') { 
        if (dom.offsetHeight > Ext.dom.Element.getViewHeight()) { 
         scrollTop = body.scrollTop; 
        } 
        dom.focus(); 
        if (scrollTop !== undefined) { 
         body.scrollTop = scrollTop; 
        } 
       } 
      } 
     } catch (e) { 
     } 
     return me; 
    } 
}); 
相關問題