2013-10-03 55 views
3

我有一个像的ExtJS网格 - 如何获得列的宽度渲染功能

columns: [ 
     ... 
     { text: 'Name', dataIndex: 'name' , width: 200, 
      renderer: function (value) { 
        // how to get width of this column (200) 
        //alert(this.width); // this is width of gridpanel 
      } 
     } 
     ... 
], 

我列的GridPanel中,一个如何得到此列的感谢宽度。

回答

7

相当肯定,这不是完成它的理想方法,但它的工作原理。除了值之外,还有很多其他值传递给了渲染器函数。通过DOM检查,这将让你列的宽度,但我不认为它的东西,我会信任的工作,因为他们更新的ExtJS:

renderer: function (value, metaData, record, rowIndex, colIndex, store, view) { 
    return view.ownerCt.columns[colIndex].getWidth(); 
} 

或者,你可以使用组件的查询来获得网格面板视图,使用行索引来查找列,然后得到它的宽度是相同的:

renderer: function (value, metaData, record, rowIndex, colIndex, store, view) { 
     var grid = Ext.ComponentQuery.query('#gridId')[0]; 
     return grid.columns[colIndex].getWidth(); 
    } 

我真的不知道什么是在这种情况下,更好的选择了,不知道为什么他们通过gridview而不是gridpanel作为渲染器函数中的视图。无论如何,这应该让你开始,祝你好运。