Extjs行选择模型

Extjs行选择模型与Grid视图

Extjs行选择模型:Ext.data.RowSelectionModel,下面为其方法:

selectFirstRow():选择第一行
selectLastRow(keepExisting):选择最后一行,keepExisting为true时保留原来选择行,否则清除原来选择
selectNext(keepExisting):选择下一行
selectPrevious(keepExisting):选择上一行

selectAll():选择所有行
selectRows(rows,keepExisting):选择数组rows中指定行的索引
selectRow(index,keepExisting):选中指定索引行
selectRange(startRow,endRow,keepExisting):选择从startRow到endRow结束的所有行
deselectRow(index):不选定指定索引的行
deselectRange(startRow,endRow):不选从startRow到endRow结束的所有行

hasNext():判断是否有下一行
hasPrevious():判断是否有上一行
isSelected(index):判断指定的索引是否被选中

getCount():返回选择的行数

---------------------------------- 代码如下:-----------------------------------------

Ext.onReady(function() {
        
/*** 在这里面添写代码 ***/

var checkColumn = new Ext.grid.CheckboxSelectionModel();

var infoColumn = new Ext.grid.ColumnModel([
   new Ext.grid.RowNumberer(),
   checkColumn,
   {header:"编号", dataIndex:"Id", width:100, tooltip:"可以点击进行排序", sortable:true, menuDisabled:false },
   {header:"姓名", dataIndex:"Name", width:150, sortable:true, menuDisabled:false },
   {header:"性别", dataIndex:"Sex", width:50, sortable:true, menuDisabled:false, renderer: function(v){
    if(v=="男"){
     return "<img src='../extjs/resources/images/access/tree/drop-add.gif' />";
    }else{
     return "<img src='../extjs/resources/images/access/tree/drop-no.gif' />";
    }
   }},
   {header:"生日", dataIndex:"Birth", width:100, sortable:true, menuDisabled:false, renderer: Ext.util.Format.dateRenderer("m/d/Y") },
   {header:"爱好", dataIndex:"Funcy", id:"funcy", sortable:false, menuDisabled:false },
   {header:"操作", dataIndex:"", width:150, menuDisabled:true, renderer: function(v){
    return "<span style='margin-right:10'><a href=# >编辑</a></span><span><a href=# >删除</a></span>";
   }}
]);

   var memberArr = [
   {
    id: 5132804128,
    name: '张三',
    sex: '男',
    birthday: '1986-03-21',
    funcy: '没有什么喜好!'
   },{
    id: 1239234222,
    name: '李四',
    sex: '女',
    birthday: '1932-07-22',
    funcy: '打麻将、斗地主!'
   },{
    id: 2982374233,
    name: '王五',
    sex: '女',
    birthday: '1923-09-01',
    funcy: '喜欢踢中国传统足球!'
   },{
    id: 4238923948,
    name: '赵六',
    sex: '男',
    birthday: '1937-03-21',
    funcy: '喜欢钓鱼!'
   }
];
  
var proxy = new Ext.data.MemoryProxy(memberArr);

var record = new Ext.data.Record.create([
   { name:"Id", type:"int", mapping:"id" },
   { name:"Name", type:"String", mapping:"name" },
   { name:"Sex", type:"String", mapping:"sex" },
   { name:"Birth", type:"String", mapping:"birthday" },
   { name:"Funcy", type:"String", mapping:"funcy" },
]);

var reader = new Ext.data.JsonReader({},record);

var store = new Ext.data.Store({
   proxy: proxy,
   reader: reader,
   autoLoad: true
});

var grid = new Ext.grid.GridPanel({
   title: "数据显示列表",
   autoHeight: true,
   cm: infoColumn,
   sm: checkColumn,
   store: store,
   renderTo: Ext.getBody(),
   autoExpandColumn: "funcy",   // 自动填满宽度
   buttonAlign: "center",
   buttons: [{
     text: "选中第一行",
     handler: function(){
      var rsm = grid.getSelectionModel();   // 得到行选择模型
      rsm.selectFirstRow();
     }
    },{
     text: "选中下一行",
     handler: function(){
      var rsm = grid.getSelectionModel();   // 得到行选择模型
      if(rsm.hasNext()) rsm.selectNext(false);
      else Ext.Msg.alert("警告","已是最后一行!");
     }
    },{
     text: "选中上一行",
     handler: function(){
      var rsm = grid.getSelectionModel();   // 得到行选择模型
      if(rsm.hasPrevious()) rsm.selectPrevious(true);
      else Ext.Msg.alert("警告","已是第一行!");
     }
    },{
     text: "选中所有行",
     handler: function(){
      var rsm = grid.getSelectionModel();   // 得到行选择模型
      rsm.selectAll();
     }
    },{
     text: "取消所有选中",
     handler: function(){
      var rsm = grid.getSelectionModel();   // 得到选择模型
      rsm.deselectRange(0,grid.getView().getRows().length-1);
     }
    },{
     text: "反选",
     handler: function(){
      var rsm = grid.getSelectionModel();   // 得到选择模型
      for(i=grid.getView().getRows().length-1;i>=0;i--){
       if(rsm.isSelected(i)){
        rsm.deselectRow(i);
       }else{
        rsm.selectRows([i],true);   // rsm.selectRow(i,true); 也可以
       }
      }
     }
    }
   ]
});

/*** 在这里面添写代码结束 ***/
        
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值