GridPanel中getSelectionModel详解

本文导读:Ext.grid.GridPanel继承自Panel,其xtype为grid,包括了排序、缓存、拖动、隐藏某一列、自动显示行号、列汇总、单元格编辑等实用功能。 当我们需要获取选择的数据时,就需要用到getSelectionModel方法。下面介绍GridPanel中getSelectionModel的操作。

一、Ext.grid.GridPanel


主要配置项:


store:表格的数据集
columns:表格列模式的配置数组,可自动创建ColumnModel列模式
autoExpandColumn:自动充满表格未用空间的列,参数为列id,该id不能为0
stripeRows:表格是否隔行换色,默认为false
cm、colModel:表格的列模式,渲染表格时必须设置该配置项
sm、selModel:表格的选择模式,默认为Ext.grid.RowSelectionModel
enableHdMenu:是否显示表头的上下文菜单,默认为true
enableColumnHide:是否允许通过标题中的上下文菜单隐藏列,默认为true


loadMask:是否在加载数据时显示遮罩效果,默认为false
view:表格视图,默认为Ext.grid.GridView
viewConfig:表格视图的配置对象
autoExpandMax:自动扩充列的最大宽度,默认为1000
autoExpandMin:自动扩充列的最小宽度,默认为50
columnLines:是否显示列分割线,默认为false
disableSelection:是否禁止行选择,默认为false
 

enableColumnMove:是否允许拖放列,默认为true
enableColumnResize:是否允许改变列宽,默认为true
hideHeaders:是否隐藏表头,默认为false
maxHeight:最大高度
minColumnWidth:最小列宽,默认为25
trackMouseOver:是否高亮显示鼠标所在的行,默认为true


主要方法:


getColumnModel():取得列模式
getSelectionModel():取得选择模式
getStore():取得数据集
getView():取得视图对象
reconfigure( Ext.data.Store store, Ext.grid.ColumnModel colModel ):使用一个新的数据集和列模式重新配置表格组件

 

二、getSelectionModel获取选择的行可以进行如下操作

 
JScript 代码    复制

var model = grid.getSelectionModel();  
model.selectAll();//选择所有行  
model.selectFirstRow();//选择第一行  
model.selectLastRow([flag]);//选择最后一行,flag为正的话保持当前已经选中的行数,不填则默认false  
model.selectNext();//选择下一行  
model.selectPrevious();//选择上一行  
model.selectRange(tartRow,ndRow, [Boolean keepExisting] );//选择范围间的行  
model.selectRow(row);//选择某一行  
model.selectRows(rows);//选择指定一些行,传递数组如[1,3,5],则分别选择1,3,5行  
model.clearSelections();//清空所有选择  
model.deselectRange( startRow, endRow );//取消从startrow到endrow的记录的选择状态  
model.deselectRow(row);//取消指定行的记录
grid.getSelected().id //得到选中的行的标识


var getSelect=function (grid, col)
{ //获取选中grid的列
        var st="";
        for (var i = 0; i < grid.getSelectionModel().getSelections().length; i++) 
        {
                   st+=grid.getSelectionModel().getSelections()[i].get("'"+col+"'")+",";
        }
}


grid.getSelectionModel的所有操作

   1. var model = grid.getSelectionModel();  
   2. model.selectAll();//选择所有行  
   3. model.selectFirstRow();//选择第一行  
   4. model.selectLastRow([flag]);//选择最后一行,flag为正的话保持当前已经选中的行数,不填则默认false  
   5. model.selectNext();//选择下一行  
   6. model.selectPrevious();//选择上一行  
   7. model.selectRange(tartRow,ndRow, [Boolean keepExisting] );//选择范围间的行  
   8. model.selectRow(row);//选择某一行  
   9. model.selectRows(rows);//选择指定一些行,传递数组如[1,3,5],则分别选择1,3,5行  
  10.   
  11.   
  12. model.clearSelections();//清空所有选择  
  13. model.deselectRange( startRow, endRow );//取消从startrow到endrow的记录的选择状态  

  14. model.deselectRow(row);//取消指定行的记录


extjs获取Grid中某一行某一列的值

选中某一行,var record = grid.getSelectionModel().getSelection();
一行的所有数据都在record里面
具体某一列:record.get("列名-dataIndex")

extjs获取store的值

grid.getStore().each(function(record){
var value = record.get("field_name");
});

store 中each()方法的使用应在load完使用,确切的说应该在on('load')事件中使用,
不懂就看一下下面的例子吧!。。。

  1. //获得store,这里假如store里有3条记录。  
  2.   
  3. var i = 0;  
  4. var ds = grid.getStore();  
  5. \\  
  6.   
  7. //以下是正确与不正确的例子  
  8. 1)错误例子  
  9. ds.each(function(rec)  
  10. { i++; }  
  11. );  
  12. result : i = 0;//表明each没有执行或此方法在数据加载前执行(后者的可能行更大)  
  13. 2)正确例子  
  14. ds.on('load',function(store,records){  
  15. store.each(function(rec)  
  16. { i++; }  
  17. );  
  18. });  
  19. result: i = 3;  
  20.   
  21. 下面看一下如何使grid中的checkBox为选中状态  
  22.   
  23. var sm = grid.getSelectionModel();//get the seletion model  
  24.   
  25. ds.on('load',function(store,records){  
  26. store.each(function(rec) {  
  27.   
  28. //判断条件  
  29. if(....)  
  30. { sm.selectRecords([rec]); }  
  31. );  
  32. }); 


  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值