`

修改DataGrid得默认scroll行为

    博客分类:
  • Web
EXT 
阅读更多
用过Ext的人也许都会注意到,DataGrid的scroll行为只在当前DataGrid中有效。比如,一个带有纵向滚动条的DataGrid,如果我们把鼠标停留在DataGrid上并滚动滚轴,DataGrid中的条目就会随之滚动起来,一直到最后一条为止。这个时候,如果继续滚动,则不会有任何响应。整个网页也不会跟着滚动。在很多情况下,这样做是正确的,其目的是防止整个网页的滚动。因为当在DataGrid中滚动到最后一行时,用户很可能不希望整个网页随着鼠标滚轴滚动。

但是在有些情况下这一行为并不适用。例如在我的一个项目中,页面上并不会指定DataGrid的高度,而是让数据自动把整个DataGrid撑起来,这样的话,DataGrid上就不会出现滚动条。而这个DataGrid占据着页面上较大的一部分,用户的鼠标通常会停留在DataGrid上进行滚动,其目的实际上是滚动整个网页。这个时候,如果不改变Ext的默认行为,网页就不会滚动,这种用户体验就是错误的。

去看看Ext的文档,并没有这方面相关的说明,看来Ext本身并没有提供这样一个选项可以设置DataGrid的scroll行为。看来只能自己研究一下了。还好自己多少也和Ext打了些交道,估计这部分可能在Grid或GridView这两个文件中。分别去看这两个东东的源代码,感觉Grid不像,先暂时排除,然后去GridView里面找,发现有一个handleWheel函数,八成就是这个了,其代码是
handleWheel: function(e) {
    var d = e.getWheelDelta();
    this.scroller.dom.scrollTop -= d * 22;
    // set this here to prevent jumpy scrolling on large tables
    this.lockedBody.dom.scrollTop = this.mainBody.dom.scrollTop = this.scroller.dom.scrollTop;
    e.stopEvent();
}

看不懂的代码咱就不说了,关键是这里有个e.stopEvent()调用,就是它把页面的鼠标滚动事件吞了下去。那么去掉这个东东就好了。
Ext.override(Ext.grid.GridView, {
    handleWheel: function(e) {
        var d = e.getWheelDelta();
        this.scroller.dom.scrollTop -= d * 22;
        // set this here to prevent jumpy scrolling on large tables
        this.lockedBody.dom.scrollTop = this.mainBody.dom.scrollTop = this.scroller.dom.scrollTop;
    }
});

分享到:
评论

相关推荐

    JQuery Easy-UI DataGrid性能调优

    - **介绍**:EasyUI DataGrid提供了一种名为Virtual Scroll View的视图模式,专门用于改善大数据量下的性能问题。 - **实施步骤**:启用此视图模式,以减少页面滚动时的数据重绘次数,从而提升整体性能。 #### 勾选...

    C#.NET学习好资料-编程常用功能及代码的总结与收藏

    `阻止默认的回车行为。 14. DataGrid超级连接列: 配置DataGrid的HyperLinkColumn,设置字段名和导航URL,以便在点击单元格时跳转到其他页面。 15. DataGrid行随鼠标变色: 实现行鼠标进入和离开的事件处理,...

    asp.net 编程 实用语句(6条)

    在***中,通过在HTML元素的onkeydown事件中编写JavaScript代码,可以改变键盘按键的默认行为。此例中,通过检测按键码为13(回车键)并且不是在特定控件(如按钮、提交、重置等)上按下时,将其转换为9(Tab键),...

    DataGridView控件使用大全

    - **编辑模式**:单元格可以处于编辑模式,此时会显示对应的编辑控件以供用户修改数据。 - **事件触发**:单元格支持各种事件,如点击、双击等,可用于响应用户的交互行为。 ##### 2.4 DataGridView 的列 列是 ...

    DataGridView控件.

    - **样式继承**:子行和子单元格可以继承父行和父单元格的样式,也可以覆盖默认样式。 - **动态设置样式**:可以在运行时根据条件动态改变单元格的样式。 ##### 5.2 Custom painting - **PaintParts**:允许开发者...

Global site tag (gtag.js) - Google Analytics