zhwl

本篇的内容是为表格添加行号,和复选框,最后谈一下Ext的选择模型。内容比较简单,就直接上代码了。
一、 设置行号
   行号的设置主要问题在于删除某一行后需要重新计算行号
  Ext.onReady(function() {

         var cm = new Ext.grid.ColumnModel([
                     new Ext.grid.RowNumberer(),           --在这里设置行号
                    { header: \'编号\', dataIndex: \'id\' },
                    { header: \'性别\', dataIndex: \'sex\' },
                    { header: \'名称\', dataIndex: \'name\' },
                    { header: \'描述\', dataIndex: \'descn\' }
                 ]);

         var data = [
                        [\'1\', \'male\', \'name1\', \'descn1\'],
                        [\'2\', \'female\', \'name2\', \'descn2\'],
                        [\'3\', \'male\', \'name3\', \'descn3\'],
                        [\'4\', \'female\', \'name4\', \'descn4\'],
                        [\'5\', \'male\', \'name5\', \'descn5\']
                    ];

         var store = new Ext.data.Store({
                         proxy: new Ext.data.MemoryProxy(data),
                         reader: new Ext.data.ArrayReader({}, [
                                    { name: \'id\' },
                                    { name: \'sex\' },
                                    { name: \'name\' },
                                    { name: \'descn\' }
                                ])
                                });
                      
         store.load();

         var grid = new Ext.grid.GridPanel({
             autoHeight: true,
             renderTo: \'grid\',
             store: store,
             cm: cm
         });

         Ext.get(\'remove\').on(\'click\', function() {   --监听删除按钮的单击事件
             store.remove(store.getAt(1));            --store.getAt(1) 获得第2行数据
             grid.view.refresh();                     --强制grid刷新,重新计算行号
         });

     });
页面代码:
 <body>
        <div id="grid"></div>
        <input id="remove" type="button" value="删除第二行数据" />
</body>

二、 设置复选框
 复选框是通过Ext.grid.CheckboxSelectionModel来设置的,它会在每行数据前加一个复选框,另外它必须添加到列定义和表格装配定义2个部分。默认单击表格的某一行,复选框就会自动选中。可以通过如下设置取消单击即选中,而需要通过单击复选框来选中:
  var sm = Ext.grid.CheckboxSelectionModel({ handleMouseDown: Ext.emptyFn });   
复选框设置代码:
 Ext.onReady(function() {
         var sm = Ext.grid.CheckboxSelectionModel();   
         var cm = new Ext.grid.ColumnModel([
                     new Ext.grid.RowNumberer(),           --在这里设置行号
                     sm,                                   --设置复选框
                    { header: \'编号\', dataIndex: \'id\' },
                    { header: \'性别\', dataIndex: \'sex\' },
                    { header: \'名称\', dataIndex: \'name\' },
                    { header: \'描述\', dataIndex: \'descn\' }
                 ]);

         var data = [
                        [\'1\', \'male\', \'name1\', \'descn1\'],
                        [\'2\', \'female\', \'name2\', \'descn2\'],
                        [\'3\', \'male\', \'name3\', \'descn3\'],
                        [\'4\', \'female\', \'name4\', \'descn4\'],
                        [\'5\', \'male\', \'name5\', \'descn5\']
                    ];

         var store = new Ext.data.Store({
                         proxy: new Ext.data.MemoryProxy(data),
                         reader: new Ext.data.ArrayReader({}, [
                                    { name: \'id\' },
                                    { name: \'sex\' },
                                    { name: \'name\' },
                                    { name: \'descn\' }
                                ])
                                });
                      
         store.load();

         var grid = new Ext.grid.GridPanel({
             autoHeight: true,
             renderTo: \'grid\',
             store: store,
             cm: cm,
             sm:sm
         });
     });

三、选择模型
(1).RowSelectionModel 模型
    在定义Ext.grid.GridPanel时,默认使用的是RowSelectionModel——行选择模型,当单击某一个单元格时,默认选中的是却是整行,选择模型默认
支持多选,鼠标单击时按住Shift或Ctrl键就可以选择多行。如果只希望选择一行,需要设置singleSelect参数。

(2).CellSelectionModel模型
    每次只允许选择一个单元格,EditorGrid里默认使用的就是CellSelectionModel. 当然也可以将EditorGrid的选择模型设置为RowSelectionModel,
从而达到选中一整行的效果。

(3).获取选中的行
  Ext.get(\'remove\').on(\'click\', function() {
             var selections = grid.getSelectionModel().getSelections();    --先获取选择模型,然后从选择模型中获取选中的记录。
             if (selections.length > 0) {
                 Ext.Msg.confirm(\'提示\', \'你确认删除选中的记录吗?\', function(_btn) {
                     if (_btn == \'yes\') {
                         for (var i = 0; i < selections.length; i++) {
                             var record = selections;
                             store.remove(record);
                         }
                         grid.view.refresh();
                     }
                 });
             }
             else
                 Ext.Msg.alert("提示","你还没有选中记录.");

         });
});

分类:

技术点:

相关文章:

  • 2021-10-05
  • 2021-10-04
  • 2021-05-19
  • 2022-12-23
  • 2021-08-17
  • 2021-06-07
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-26
  • 2021-10-19
  • 2022-01-02
相关资源
相似解决方案