Extjs中grid上显示combo中值的问题

  在extjs中,grid上渲染的combo中的值,默认显示的是valueField的上值,也就是说在grid上的combox显示的是当前值的下标索引
而不是我们所需要的displayField上的属性值!那么如何解决这个问题呢?我们要去写一个renderer这个事件例如下面代码
    dataIndex: 'belongNodeID',
    header: '选择任务关系',
    editor: {
     id: 'belongNodelist',
     xtype: 'combo',
     typeAhead: true,
     selectOnTab: true,
     store: belongNodeStore,
     displayField: 'label',
     valueField: 'value',
     editable: false,
     lazyRender: true,
    },
    //显示displayvalue就要给该列添加renderer方法
    renderer: function(data) {
         //循环遍历belongNodeStore中数据里的集合
     for (var i = 0; i < belongNodeStore.data.items.length; i++) {
      //如果索引相同
      if (belongNodeStore.data.items[i].data.value == data) {
       //返回数据集合里displayField中的值
       return belongNodeStore.data.items[i].data.label;
      }
     }
    } 
这里的 belongNodeStore是从数据库里读出combo中所需要的数据保存在belongNodeStore中的store,即
 var belongNodeStore = Ext.create('Ext.data.Store', {
   fields: ['label', 'value'],
//小脚本中的方法是从后台中定义的
   data: [ <%=getComBox() %>],
   autoLoad: true
  }); 
后台读取代码如下 
public string getComBox()
{
...//调用数据库方法省略,把读取出来的数据保存在一个list对象集合里    
     StringBuilder sb = new StringBuilder();
            foreach (var item in list)
            {
                sb.Append("{'label':'"+item.Name+"','value':'"+item.Id+"'},");
            }
            return sb.ToString().TrimEnd(',');

以上代码就可以实现从数据库中读出来的数据能够在grid中的Combo中显示其对应的 displayField值 

原文地址:https://www.cnblogs.com/ljh1993/p/3233105.html