zoukankan      html  css  js  c++  java
  • 55. GridPanel中getSelectionModel详解

    转自:https://blog.csdn.net/qq_29663071/article/details/50728429
    本文导读: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. }); 
  • 相关阅读:
    windows的80端口被占用时的处理方法
    Ansible自动化运维工具安装与使用实例
    Tomcat的测试网页换成自己项目首页
    LeetCode 219. Contains Duplicate II
    LeetCode Contest 177
    LeetCode 217. Contains Duplicate
    LeetCode 216. Combination Sum III(DFS)
    LeetCode 215. Kth Largest Element in an Array(排序)
    Contest 176 LeetCode 1354. Construct Target Array With Multiple Sums(优先队列,递推)
    Contest 176
  • 原文地址:https://www.cnblogs.com/sharpest/p/7639482.html
Copyright © 2011-2022 走看看