zoukankan      html  css  js  c++  java
  • 【转】Ext的CheckboxSelectionModel默认选中

    转自:http://hi.baidu.com/programdragon/blog/item/3b6b52ef73e04fd9b21cb1e7.html

    说明:勾选某几条记录后,翻页再翻回来,保持原来的选中状态。

    原理:在勾选或取消勾选的时候用recordIds保存或删除勾选中的Record的主键id值,
    每次store加载(load事件)完后,遍历store,比较每条Record的主键列id是否在recordIds中,
    若存在则将Record保存到临时变量records中,最后调用selMod.selectRecords(records, true);

    写Array的remove与contains方法,搞得有点像java.util.HashSet(不让Array存重复值)

    1. function RemoveArray(array,attachId){  
    2.     for(var i=0,n=0;i<array.length;i++){  
    3.         if(array[i]!=attachId){  
    4.             array[n++]=array[i]  
    5.         }  
    6.     }  
    7.     array.length -= 1;  
    8. }  
    9. function containsArray(array,attachId){  
    10.     for(var i=0;i<array.length;i++){  
    11.         if(array[i]==attachId){  
    12.             return true;  
    13.             break;  
    14.         }  
    15.     }  
    16.    return false;  
    17. }   
    18. Array.prototype.remove = function (obj) {  
    19.     return RemoveArray(this,obj);  
    20. };   
    21. Array.prototype.contains = function (obj) {  
    22.     return containsArray(this,obj);  
    23. }; 

    1. var recordIds=new Array();// 选中的Record主键列id列表  
    2. var recordsChecked=new Array();// 选中的Record列表  
    3.   
    4. var store = new Ext.data.JsonStore({  
    5.                 url : 'viewXXX.do',  
    6.                 pruneModifiedRecords : true,  
    7.                 totalProperty : 'totalProperty',  
    8.                 root : 'root',  
    9.                 fields : [{name : 'id'},   
    10.                           {name : 'status'}  
    11.                           ],  
    12.                 listeners : {  
    13.                     load : function() {  
    14.                         var records = new Array();  
    15.                         store.each(function(record) {  
    16.                             if (recordIds.contains(record.data.id))  
    17.                                  records.push(record);  
    18.                         });  
    19.                         selMod.selectRecords(records, true);// 以后每次load数据时,都会默认选中  
    20.                     }  
    21.                 }  
    22.             });  
    23.       
    24.     var selMod = new Ext.grid.CheckboxSelectionModel({  
    25.         handleMouseDown : Ext.emptyFn,  
    26.                 listeners : {  
    27.                     "rowdeselect" : {  
    28.                         fn : function(e, rowIndex, record) {  
    29.                             if (recordIds.contains(record.data.id)) {  
    30.                                 recordIds.remove(record.data.id);  
    31.                                 recordsChecked.remove(record);  
    32.                             }  
    33.                         }  
    34.                     },  
    35.                     "rowselect" : {  
    36.                         fn : function(e, rowIndex, record) {  
    37.                             if (!recordIds.contains(record.data.id))  
    38.                                 recordIds.push(record.data.id);  
    39.                             recordsChecked.push(record);  
    40.                         }  
    41.                     }  
    42.                 }  
    43.             });  
  • 相关阅读:
    linux快速安装lamp环境
    linux配置网卡
    给linux添加yum源。
    windows 环境下wamp环境的搭建。
    jQuery知识点总结(第六天)
    LazyLoad学习(一)之无阻塞动态尽可能并行加载脚本文件以及确保执行顺序
    Jquery复习(十)之$的用法
    JavaScript 时间与日期处理
    如何将一个HTML页面嵌套在另一个页面中?
    iframe学习(七)之父窗口的样式会影响子窗口吗?
  • 原文地址:https://www.cnblogs.com/abinxm/p/1952517.html
Copyright © 2011-2022 走看看