`
atian25
  • 浏览: 467751 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ExtJS Grid 滚动到指定Record+选择多行

阅读更多

如下:示例代码是对某个特定的对象,如果需要全局,自己Extend吧.

 

1.滚动Grid到指定的Record

 

代码:

      viewConfig:{
        forceFit: true,
        deferEmptyText: true,
        emptyText: "无相关数据",

        //滚动Grid到指定的Record
        scrollToRecord:function(record){
          var index = this.grid.getStore().indexOf(record);
          this.scrollToRow(index);
        },

        //滚动Grid到指定的列
        scrollToRow:function(rowIndex){
          var firstRow = Ext.get(this.getRow(0));
          var row = Ext.get(this.getRow(rowIndex));
          var distance = row.getOffsetsTo(firstRow)[1];
          this.scroller.dom.scrollTop = distance;
        }
      }

注: GridView源码里面有几个方法似乎也可以做到,不过临时测试了下没有用,记录下,以后有空看看:

 

focusRow,resolveCell,getResolvedXY,syncFocusEl,ensureVisible

 

09.07.15补记 , 测试了下focusRow,也可以滚动,不过似乎是把这个记录滚动到可视区域就ok了,不一定会显示为可视区域内的第一条,示例代码如下:

Ext.onReady(function(){
  Ext.BLANK_IMAGE_URL = '/images/s.gif';
  Ext.QuickTips.init();
  testGridViewScroll();
});

function testGridViewScroll(){
  var arr = [];
  for(var i=0;i<100;i++){
    arr.push({id:i,name:'item'+i});
  }
  var grid = new Ext.grid.GridPanel({
    title:'测试滚动条',
    autoScroll: true,
    columnLines:true,
    height:300,
    width:600,
    renderTo:document.body,
    viewConfig:{
      forceFit: true,
      deferEmptyText: true,
      emptyText: "无相关数据",
      //我自定义的滚动方法
      //滚动Grid到指定的Record
      scrollToRecord:function(record){
        var index = this.grid.getStore().indexOf(record);
        this.scrollToRow(index);
      },
      //滚动Grid到指定的列
      scrollToRow:function(rowIndex){
        var firstRow = Ext.get(this.getRow(0));
        var row = Ext.get(this.getRow(rowIndex));
        var distance = row.getOffsetsTo(firstRow)[1];
        this.scroller.dom.scrollTop = distance;
      }
    },
    store:new Ext.data.JsonStore({
      root:'data',
      fields:['id','name']
    }),
    columns:[
      {header:'ID',dataIndex:'id'},
      {header:'名称',dataIndex:'name'}
    ],
    sm:new Ext.grid.RowSelectionModel(),
    tbar:[
      '滚动到',
      {xtype:'textfield',value:'25',id:'rowNum'},
      '行','-',
      {
        text:'内置滚动方法!',
        style: 'text-decoration: underline;',
        handler:function(btn,e){
          var rowNum = parseInt(Ext.get('rowNum').getValue());
          grid.getSelectionModel().selectRow(rowNum);
          //内置的滚动方法
          grid.getView().focusRow(rowNum);
        }
      },{
        text:'自定义滚动方法!',
        style: 'text-decoration: underline;',
        handler:function(btn,e){
          var rowNum = parseInt(Ext.get('rowNum').getValue());
          grid.getSelectionModel().selectRow(rowNum);
          grid.getView().scrollToRow(rowNum);
        }
      }
    ]
  });
  grid.getStore().loadData({data:arr});
}
 

 

2.选择指定的几行

代码:

//测试数据
var idArr = '1,5,6,7'.split(',');

//找到对应的测试项结果Records
var recordArr = grid.getStore().queryBy(function(r,id){
  //判定是否是指定的record
  return idArr.indexOf(r.get('testLogId'))!=-1;
 },this).getRange();

//选中这些记录
grid.getSelectionModel().selectRecords(recordArr,true);
 

3.取消选择指定Record的行

 

代码:

      sm:new Ext.grid.RowSelectionModel({
        //光有selectRecords...于是自己扩展一个
        deselectRecords : function(records, preventViewNotify){
            var ds = this.grid.store;
            for(var i = 0, len = records.length; i < len; i++){
                this.deselectRow(ds.indexOf(records[i]), preventViewNotify);
            }
        }
      })

 

4.单元格换行

代码:

.x-grid3-cell-inner {  
      /*内容长的时候换行*/  
      white-space:normal !important;  
} 
 

 

---

 

分享到:
评论
4 楼 chenkanchenkan 2012-04-29  
damoqiongqiu 写道
老大,你写的都是如此的简洁啊,给个效果图嘛,真是的。


grid下键和滚动
3 楼 atian25 2009-07-15  
damoqiongqiu 写道
老大,你写的都是如此的简洁啊,给个效果图嘛,真是的。


我知道错了...回复你的那个3.0chm的帖子太短了...被扣了30分..还禁言...
2 楼 atian25 2009-07-15  
damoqiongqiu 写道
老大,你写的都是如此的简洁啊,给个效果图嘛,真是的。

更新了内容...

不过这都是讲一个操作的....如何给效果图... 我懒得做gif..
1 楼 damoqiongqiu 2009-07-15  
老大,你写的都是如此的简洁啊,给个效果图嘛,真是的。

相关推荐

    Extjs tree+grid+form+panel 使用实例

    Ext各种组件的使用实例,Extjs tree+grid+form+panel 使用实例

    extjs 3.3.1 + 中文 3.3 api + extjs(2.x++3.x)主题大全

    extjs 3.3.1 中文 3.3 api extjs(2.x++3.x)主题大全

    ExtJs Grid选择行

    在ExtJs框架中,Grid组件是一种非常常用的展示数据表格的方式,它提供了丰富的功能,包括数据的排序、分页、过滤以及行选择等。在实际应用中,经常需要根据用户交互来判断Grid中的行是否被选中,以便进行下一步的...

    ExtJS grid过滤操作

    ExtJS Grid是一个强大的数据展示组件,它允许用户以表格的形式查看和操作大量数据。在实际应用中,数据过滤是常见的需求,以便用户能快速定位到感兴趣的信息。本篇将深入探讨ExtJS Grid的过滤操作,以及如何动态地对...

    EXT_ASP.rar_asp extjs_extjs_extjs asp_extjs+asp

    在"EXT_ASP.rar_asp extjs_extjs_extjs asp_extjs+asp"这个压缩包中,我们可以看到EXTJS与ASP结合使用的示例,用于开发一个通讯录程序,这是一个很好的学习EXTJS和ASP集成的实践项目。 首先,EXTJS的核心在于它的...

    extjs 轻松搞定EXTJS.pdf +很多DEMO 案例

    extjs 轻松搞定EXTJS.pdf +很多DEMO 高清 高质量 案例

    Extjs4登录功能+验证码+struts2

    总结起来,"Extjs4登录功能+验证码+struts2"涉及到的知识点有: 1. ExtJS4的表单组件和布局:如何使用`Ext.form.Panel`、`Ext.form.field.Text`和`Ext.button.Button`创建登录表单。 2. 验证码实现:前端展示和后端...

    EXTJS grid导出EXCEL文件

    在EXTJS 3.2.0版本中,Grid提供了一个功能,可以将其中的数据导出到Microsoft Excel文件中,方便进一步的数据分析和处理。 "EXTJS grid导出EXCEL文件"这个主题涉及到的主要知识点包括: 1. **EXTJS Grid组件**:...

    extjs教程.txt基于spring+springMvc+mybatis框架开发

    extjs视频教程,基于spring+springMvc+mybatis框架开发,适合初学者,跟着视频教程入门

    Extjs 实现多行合并(rowspan)效果

    通过分析这些文件,我们可以学习到如何在实际项目中实现ExtJS的多行合并效果。具体实现细节可能需要查看`demo.html`和`rowspan.js`的代码内容,了解具体的实现方式和技巧。而`rowspan.css`则提供了关于如何优化显示...

    extjs+实例+管理系统+学习extjs的好例子

    extjs+实例+管理系统+学习extjs的好例子

    ExtJs grid多选时获取选中的所有值

    在实际业务场景中,经常需要支持用户对表格中的多行数据进行选择,并执行批量操作,如删除、编辑等。因此,掌握如何在ExtJs Grid中实现多选功能以及如何获取已选中的所有值是非常重要的。 #### 二、实现多选功能 在...

    struts2+extjs2.1+json+hibernate+spring

    上网找资料,都是一些不全的. struts2+extjs2.1+json+hibernate+spring 自己整合的例子. 当中hibernate数据源可以配置自己的.后台输送json 前台接收.

    Extjs Grid+apsx+json Demo

    通过这个示例,你可以学习到如何将客户端的动态UI(ExtJS Grid)与服务器端的业务逻辑(ASP.NET)无缝连接,以及如何有效地利用JSON作为数据交换格式。这样的技术组合对于构建高效、交互性强的Web应用非常实用。在...

    Extjs+SpringMVC+MyBaits财务管控系统

    例如,用户在前端界面上进行财务报表查询,Extjs会发送Ajax请求到SpringMVC的相应Controller,Controller根据请求参数调用MyBatis的Mapper方法,执行SQL查询,然后将查询结果转化为Java对象,最后返回给前端进行数据...

    extjs grid示例代码

    ExtJS Grid是Sencha ExtJS框架中的一个核心组件,它用于构建数据驱动的表格视图。Grid组件在Web应用中广泛使用,因为它提供了强大的数据展示、排序、分页、筛选和编辑功能。以下是对`ExtJS Grid`示例代码的详细解析...

    extjs grid数据导出excel文件

    本文将深入讲解EXTJS Grid如何实现数据导出到Excel文件的功能。 首先,我们要明白EXTJS Grid的数据导出到Excel的过程通常涉及到以下几个步骤: 1. **获取Grid数据**:在EXTJS中,Grid的数据存储在Store对象中。要...

    ExtJS4.1+MVC4+Spring.NET1.3+EF5 整合项目数据库

    ExtJS4.1+MVC4+Spring.NET1.3+EF5 整合项目数据库(pdm、sql及sqlite数据库) 原文地址:http://blog.csdn.net/xz2001/article/details/8723266

    extjs grid

    EXTJS Grid是EXTJS库中的一个核心组件,用于创建数据密集型的表格视图,它在Web应用程序中常用于展示和操作大量结构化数据。EXTJS Grid提供了丰富的功能,包括分页、排序、过滤、编辑等,使得用户可以高效地管理和...

    ExtJs+struts2+hibernate+spring的图书管理系统

    ExtJs+struts2+hibernate+spring的图书管理系统,可作为毕业设计使用,供大家一起参考学习为。

Global site tag (gtag.js) - Google Analytics