首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET Framework >

Ext中combox放在EditorGridPanel中的简略应用

2013-01-23 
Ext中combox放在EditorGridPanel中的简单应用var strSex new Ext.data.SimpleStore({fields: [value,

Ext中combox放在EditorGridPanel中的简单应用


    var strSex = new Ext.data.SimpleStore({
        fields: ['value', 'name'],
        data : [
            ['1', '男'],
            ['2', '女']
        ]
    });
    
    
    var objSex = new Ext.form.ComboBox({
            hideLabel: true,
            lazyRender: true, //值为true时阻止ComboBox渲染直到该对象被请求
            store: strSex,
            displayField: "name",
            valueField: "value",
            mode: "local",
            editable: false,
            triggerAction: "all"
           
   });
  
  
    var gridColumns = new Ext.grid.ColumnModel([//列模式
        _sm,
        { header: "ID", dataIndex: "id", hidden: true },
        { header: "姓名", dataIndex: "name", editor: objEditname },
        { header: "性别", dataIndex: "sex", editor: objSex }
    ]);
       var grid = new Ext.grid.EditorGridPanel ({//数据显示面板
        border: false,
        loadMask: true,
        clicksToEdit:2, 
        width: 500,
        height: 300,      
        store: store,       
        sm: _sm,
        cm: gridColumns,
        clicksToEdit: 2,
        bbar: grid_bbar,
        region:'center'//border布局必须
    });



EditorGridPanel编辑完后,下拉框在鼠标离开以后 本来是应该显示 男或者女,但是却很奇怪的变成 1或者2.  

我那个 男和女的 在别的地方,是从数据库读出来的,在数据库放的是 1,2,3, 对应男,女,其他,类似的很多。

这里为了测试 写死了,这样写没问题的 var strSex = new Ext.data.SimpleStore({
  fields: ['value', 'name'],
  data : [
  ['男'', '男'],
  ['女'', '女']
  ]
  });
但是我不想这样解决问题,谁解决过能教下我谢谢了 刚学的 EXT 挺纠结的。
最好直接给写下代码 看看。


------解决方案--------------------


记忆中EXT 中的Combox是读Json类型的数据

你可以把 1,男  位置反过来 看看能不能读出来

另外LZ参考下这个文章

Ext.Combox
[解决办法]
显示需要提供自定义的renderer方法


   var gridColumns = new Ext.grid.ColumnModel([//列模式
        _sm,
        { header: "ID", dataIndex: "id", hidden: true },
        { header: "姓名", dataIndex: "name", editor: objEditname },
        { header: "性别", dataIndex: "sex", editor: objSex, renderer: function(value)
{if(value==1) return '男'; else if(2==value) return '女'; else return '其他';} }
    ]);

[解决办法]
引用:
 如果就这几个是可以实现的 如果 我 那个 是从数据库读出来的,该怎么写 啊 就是 我在 数据存的 是
 1,2 实际对应的是 男或者女。 男和女只是一个 简单的 ,很多都是 从数据库读出来 很多的,不可能就这么写死了。

这个也是同样处理方式, 可以把需要下拉选择的数据放到一个store里面,参考代码类似于如下

 var dsChannelType = new Ext.data.JsonStore({
    url: '../DeviceServlet?status=channelType',
    root: 'root',
    fields: ['id', 'name']
});
dsChannelType.load();

{id:'channelType', header:'通道类型', dataIndex:'channelType', width:120, sortable:true, 
           editor: new fm.ComboBox({
           editable: false,
typeAhead: true,
lazyRender:true,
triggerAction: 'all',
                allowBlank: false,
                mode: 'local',                     
                store: dsChannelType,
                displayField: 'name',  
                valueField: 'id',
                emptyText: '请选择通道类型',
                blankText: '请选择通道类型'  
           }),
           renderer: function(value){
           var record = dsChannelType.getById(value);
           if(record)
           {
           return record.data.name;
           }
           else return value;


           }}


[解决办法]
也是JSON。Ext中combox放在EditorGridPanel中的简略应用
[解决办法]
其实你这个不是问题的问题,因为你的combox返回的就是value,而你的value就是1或者2,你可以使用

  var gridColumns = new Ext.grid.ColumnModel([//列模式
        _sm,
        { header: "ID", dataIndex: "id", hidden: true },
        { header: "姓名", dataIndex: "name", editor: objEditname },
        { header: "性别", dataIndex: "sex", editor: objSex }
    ]);

改为
{ header: "性别", dataIndex: "sex", editor: objSex,renderer:function(value){ return value == '1' ? '男' : '女' } }


[解决办法]
引用:
没有效果 再鼠标移开后,还是变回对应的 key值了 ,继续纠结中

这个一定是可以的, 是我实际项目中的一段代码copy出来的, 注意store中的json数据格式, 多看看extjs api文档吧
[解决办法]
该回复于2010-12-27 16:06:22被版主删除

热点排行