ExtJS中Grid的单元格内容提示扩展

上一篇文章ExtJS中Grid的单元格内容换行扩展 中已经提到,如果单元格内容超出单元格的长度,框架会把超出长度的那部分内容以省略号代替显示。我们可以利用上一篇文章中的扩展组件,使内容换行显示,但是这样会使每行的高度不一致,外观体验比较糟糕(换行显示一般应用于单元格内容不是非常多,且每行的内容长度大体一致)。大部分情况下,我们都是使用框架提供的QuickTip来展示单元格的详细内容。

同样,此扩展功能可以写成一个扩展组件,这样可以不用每次使用都需要配置相同代码的renderer配置项。

扩展组件代码如下:

Ext.define('Ext.grid.column.QuickTipColumn', {
	extend: 'Ext.grid.column.Column',
	alias: 'widget.quicktipcolumn',
	initComponent: function() {
		var me = this,
		// 定义customerRenderer变量,保存用户配置的renderer
			customerRenderer = me.renderer;
		if(customerRenderer) {
			// 如果用户配置了renderer,则限制性用户配置的renderer,然后执行默认的内容换行renderer
			me.renderer = function(value, metadata, record, rowIndex, columnIndex, store) {
				value = customerRenderer(value, metadata, record, rowIndex, columnIndex, store);
				value = me.defaultRenderer(value, metadata, record, rowIndex, columnIndex, store);
				return value;
			};
		}
		me.callParent(arguments);
	},
	
	defaultRenderer: function(value, metadata, record, rowIndex, columnIndex, store) {
		var me = this,
			metaValue = record.get(me.dataIndex);
		metadata.tdAttr = 'data-qtip="' + metaValue + '"';
		return value;
	}
});
使用示例如下:

{ 
	xtype: 'quicktipcolumn',
	text: '电子邮件', 
	dataIndex: 'email' , 
	flex: 1
}
效果如下:


本文第一次发表于:ExtJS中实现Grid的单元格内容提示

更多ExtJS相关内容请点击:戴面罩的怪杰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值