• 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值 

  • 相关阅读:
    算法题-数组算法题
    Linux-shell脚本的调试和追踪
    Linux-循环loop
    Linux-条件判断式
    Linux-第一行#!/bin/bash的含义
    Linux-排序命令:sort、wc、uniq
    Linux-选取命令:cut grep
    Linux-shell变量
    Linux-重定向、追加、tee
    Linux三剑客-sed编辑文本
  • 原文地址:https://www.cnblogs.com/ljh1993/p/3233105.html
Copyright © 2020-2023  润新知