在使用ExtJS开发grid表格时,其中有一列嵌入了combo组件;代码如下:
{ xtype: 'gridcolumn', menuDisabled: true, sortable: false, align: 'center', dataIndex: 'goodsName', text: '物品名称', width: 100, editor: { xtype: 'combo', displayField: 'goodsName', valueField: 'id', hideTrigger: true, typeAhead: true, minChars: 1, store: { xtype: 'store', model: 'GoodsComboBoxModel', proxy: { type: 'ajax', url: 'allGoodslistByName.action', reader: { type: 'json', root: 'array', totalProperty: 'total' } }, autoLoad: false }, listeners: { 'change': function(){...}, 'select': function(){...}, 'focus': function(){...} }, renderer: function (value, metaData) { if (null != value && "" != value) { metaData.tdAttr = 'data-qtip = ' + value.replace(/\s+/g, "");//Cannot read property 'childNodes' of null metaData.style = 'white-space:normal;word-break:break-all;'; } return value; } },注意看renderer渲染的函数,因为定义的combo的valueFeild是id,所以在这个列当中record col值应该是一个数字,但是这里定义的是物品名称,应该显示id对应的物品名称;当然有的人会想为什么不讲valueField定义为goodsName,这样似乎更加简单;这里是因为有其他原因,所以要定义为ID,这里不讨论这个;问题就出在函数中: metaData.tdAttr = 'data-qtip = ' + value.replace(/\s+/g, ""); 这个主要是长字符串需要使用到这个; value就是qtip要显示的字符串; 将这段代码注释以后,再次测试无问题; 我这里是将这段代码改为其他代码来显示goodsName字符串; 网上也有说是因为record中字段值为null,想这种问题,网上的只能做参考,帮你排除;当行不通时还是需要打断点耐心去寻找到问题,这样才是解决问题的根本