ExtJS-Cannot read property 'childNodes' of null

今天药忘吃喽~ 2022-05-13 15:54 314阅读 0赞

在使用ExtJS开发grid表格时,其中有一列嵌入了combo组件;代码如下:

  1. {
  2. xtype: 'gridcolumn',
  3. menuDisabled: true,
  4. sortable: false,
  5. align: 'center',
  6. dataIndex: 'goodsName',
  7. text: '物品名称',
  8. width: 100,
  9. editor: {
  10. xtype: 'combo',
  11. displayField: 'goodsName',
  12. valueField: 'id',
  13. hideTrigger: true,
  14. typeAhead: true,
  15. minChars: 1,
  16. store: {
  17. xtype: 'store',
  18. model: 'GoodsComboBoxModel',
  19. proxy: {
  20. type: 'ajax',
  21. url: 'allGoodslistByName.action',
  22. reader: {
  23. type: 'json',
  24. root: 'array',
  25. totalProperty: 'total'
  26. }
  27. },
  28. autoLoad: false
  29. },
  30. listeners: {
  31. 'change': function(){...},
  32. 'select': function(){...},
  33. 'focus': function(){...}
  34. },
  35. renderer: function (value, metaData) {
  36. if (null != value && "" != value) {
  37. metaData.tdAttr = 'data-qtip = ' + value.replace(/\s+/g, "");//Cannot read property 'childNodes' of null
  38. metaData.style = 'white-space:normal;word-break:break-all;';
  39. }
  40. return value;
  41. }
  42. },

注意看renderer渲染的函数,因为定义的combo的valueFeild是id,所以在这个列当中record col值应该是一个数字,但是这里定义的是物品名称,应该显示id对应的物品名称;当然有的人会想为什么不讲valueField定义为goodsName,这样似乎更加简单;这里是因为有其他原因,所以要定义为ID,这里不讨论这个;问题就出在函数中:
metaData.tdAttr = ‘data-qtip = ‘ + value.replace(/\s+/g, “”);
这个主要是长字符串需要使用到这个; value就是qtip要显示的字符串;
将这段代码注释以后,再次测试无问题;
我这里是将这段代码改为其他代码来显示goodsName字符串;
网上也有说是因为record中字段值为null,想这种问题,网上的只能做参考,帮你排除;当行不通时还是需要打断点耐心去寻找到问题,这样才是解决问题的根本

发表评论

表情:
评论列表 (有 0 条评论,314人围观)

还没有评论,来说两句吧...

相关阅读