Chinaunix首页 | 论坛 | 博客
  • 博客访问: 41299
  • 博文数量: 7
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 70
  • 用 户 组: 普通用户
  • 注册时间: 2014-10-17 14:57
文章分类
文章存档

2014年(7)

分类: JavaScript

2014-10-21 16:20:36

在使用grid时, 经常需要编辑单元格中的数据, 有时候需要使用下拉框来选择预先指定好的值,  在某些极端的情况下, 每一行的下拉框都要求不一样.
例如下面的例子,  动物和植物分别使用不同的下拉编辑框
           
       图1
 
 
       图2


       图3
  

点击(此处)折叠或打开

  1. var store = new Ext.data.Store({
  2.     fields : [ 'id', 'label', 'name' ],
  3.     data : [ {
  4.         id : 1,
  5.         label : '动物',
  6.         name : null
  7.     }, {
  8.         id : 2,
  9.         label : '植物',
  10.         name : null
  11.     } ]
  12. });

  13. var createEditor = function(id) {
  14.     var nameStore = null;
  15.     if (id == 1) {
  16.         nameStore = Ext.create('Ext.data.Store', {
  17.             fields : [ 'name' ],
  18.             data : [ {
  19.                 name : '飞禽'
  20.             }, {
  21.                 name : '走兽'
  22.             } ]
  23.         });
  24.     } else {
  25.         nameStore = Ext.create('Ext.data.Store', {
  26.             fields : [ 'name' ],
  27.             data : [ {
  28.                 name : '花'
  29.             }, {
  30.                 name : '草'
  31.             } ]
  32.         });
  33.     }

  34.     var box = Ext.create('Ext.form.field.ComboBox', {
  35.         store : nameStore,
  36.         displayField : 'name',
  37.         valueField : 'name'
  38.     });
  39.     return box;
  40. };

  41. var grid = Ext.create('Ext.grid.Panel', {
  42.     renderTo : Ext.getBody(),
  43.     store : store,
  44.     columns : [ {
  45.         text : '分类',
  46.         dataIndex : 'label'
  47.     }, {
  48.         text : '名称',
  49.         dataIndex : 'name',
  50.         field : {
  51.             xtype : 'label',
  52.             editable : false
  53.         }
  54.     } ],
  55.     plugins : [ Ext.create('Ext.grid.plugin.CellEditing', {
  56.         clicksToEdit : 1,
  57.         listeners : {
  58.             beforeedit : function(editor, e, eOpts) {
  59.                 var editor = createEditor(e.record.data.id);
  60.                 e.column.setEditor(editor);
  61.                 return true;
  62.             },
  63.             edit : function(editor, e) {
  64.                 e.record.set('name', e.column.getEditor().getValue());
  65.             }
  66.         }
  67.     }) ]
  68. });



阅读(3374) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~