var sdzbm_Store = new Ext.data.Store({
        proxy: new Ext.data.HttpProxy({
            url: 'data/dangan/GetSdzbm.aspx',
            autoLoad: true,
            method: 'post'
        }),
        reader: new Ext.data.JsonReader({
            totalProperty: 'totalCount',
            root: 'data'
        }, ["id", "name"])
    });    sdzbm_Store.load();sdzbm_Store返回的值
{totalCount:9,success:true,error:"",singleInfo:"",data:[{"id":"100","name":"厦门"},{"id":"102","name":"沈阳"},{"id":"108","name":"安徽"},{"id":"109","name":"杭州"},{"id":"110","name":"宁波"},{"id":"111","name":"漳州"},{"id":"112","name":"晋江"},{"id":"113","name":"北京"},{"id":"114","name":"北京"}]}{
    header: "送达站",
    tooltip: "送达站",
    width: 60,
    dataIndex: "sdzbm",
    sortable: true,
        renderer: function(value, meta, record, rowIndex, colIndex, store) {
        if (value < 1) {
            return "";
        }
        else {
            debugger
            return "<b><font color=#008B8B>" + sdzbm_Store.getAt(value - 1).data.name + "</font></b>";//为何这句老是提示为空或不是对象
        }
    }
},

解决方案 »

  1.   


    renderer: function(value, meta, record, rowIndex, colIndex, store) {
    if (value < 1) {
    return "";
    }
    else {
    debugger
    return "<b><font color=#008B8B>" + sdzbm_Store.getAt(value - 1).data.name + "</font></b>";//为何这句老是提示为空或不是对象
    }
    }renderer函数中,value参数是只当前值,而不是当前的记录下标,sdzbm_Store.getAt(value - 1)肯定是获取不到值的,试试改为:renderer: function(value, meta, record, rowIndex, colIndex, store) {
    if (value < 1) {
    return "";
    }
    else {
    debugger
    return "<b><font color=#008B8B>" + record.get('name') + "</font></b>";//为何这句老是提示为空或不是对象
    }
    }
      

  2.   

    原因估计是因为你的ID都是数字,那么sdzbm_Store.getAt(value - 1).data.name就可以获取到数据,可能恰好数据又是对应的。个人建议你好好查阅API,看看renderer函数的参数到底是什么,还有store.getAt()函数需要什么参数。
    注:store.getAt(param)函数的参数是一个数字,返回下标为param的record。
    renderer配置时传递到函数中的第一个参数是当前的值。比如你的代码中,name列的渲染函数,那么每一行传递到该列的渲染函数的第一个参数就是改行的name值,'厦门','沈阳',……