Easyui 表格datagrid 的单元格内容显示方式扩展

有时候使用表格时因为有一个字段内容过多导致的表格被撑大,如下图:



当然easyui datagrid 的nowrap属性默认为true,为true时在一行中显示数据,如下图:



但这样无法看到全部的内容,用户体验不好。

这时我们可以用以下方法来优化显示效果。

以下为easyui扩展代码(已标明转载,再次感谢孙宇、夏悸无私分享)

<script type="text/javascript">
/**
 * grid tooltip参数
 * 
 * @author 孙宇
 */
var gridTooltipOptions = {
	tooltip : function(jq, fields) {
		return jq.each(function() {
			var panel = $(this).datagrid('getPanel');
			if (fields && typeof fields == 'object' && fields.sort) {
				$.each(fields, function() {
					var field = this;
					bindEvent($('.datagrid-body td[field=' + field + '] .datagrid-cell', panel));
				});
			} else {
				bindEvent($(".datagrid-body .datagrid-cell", panel));
			}
		});

		function bindEvent(jqs) {
			jqs.mouseover(function() {
				var content = $(this).text();
				if (content.replace(/(^\s*)|(\s*$)/g, '').length > 5) {
					$(this).tooltip({
						content : content,
						trackMouse : true,
						position : 'bottom',
						onHide : function() {
							$(this).tooltip('destroy');
						},
						onUpdate : function(p) {
							var tip = $(this).tooltip('tip');
							if (parseInt(tip.css('width')) > 500) {
								tip.css('width', 500);
							}
						}
					}).tooltip('show');
				}
			});
		}
	}
};
/**
 * Datagrid扩展方法tooltip 基于Easyui 1.3.3,可用于Easyui1.3.3+
 * 
 * 简单实现,如需高级功能,可以自由修改
 * 
 * 使用说明:
 * 
 * 在easyui.min.js之后导入本js
 * 
 * 代码案例:
 * 
 * $("#dg").datagrid('tooltip'); 所有列
 * 
 * $("#dg").datagrid('tooltip',['productid','listprice']); 指定列
 * 
 * @author 夏悸
 */
$.extend($.fn.datagrid.methods, gridTooltipOptions);

/**
 * Treegrid扩展方法tooltip 基于Easyui 1.3.3,可用于Easyui1.3.3+
 * 
 * 简单实现,如需高级功能,可以自由修改
 * 
 * 使用说明:
 * 
 * 在easyui.min.js之后导入本js
 * 
 * 代码案例:
 * 
 * $("#dg").treegrid('tooltip'); 所有列
 * 
 * $("#dg").treegrid('tooltip',['productid','listprice']); 指定列
 * 
 * @author 夏悸
 */
$.extend($.fn.treegrid.methods, gridTooltipOptions);
</script>

效果如下图所示:



使用方法很简单,只需要在datagrid的onLoadSuccess方法中加一行代码: $(this).datagrid('tooltip');

onLoadSuccess : function() {
			$(this).datagrid('tooltip',['attr1']);
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 EasyUIDataGrid 组件,你可以使用它提供的编辑器和验证规则来校验单元格的必填项。下面是一种实现方式: 1. 首先,为 DataGrid 中需要校验的列配置编辑器,比如使用 text 或 combobox 编辑器。可以通过设置 `editor` 属性来指定编辑器类型。 2. 然后,在 DataGrid 的 `onBeforeSave` 事件中获取当前编辑的行数据,并进行必填校验。可以通过获取编辑器的值或其他方式来判断单元格是否有值。 3. 如果单元格没有值,则可以通过返回 false 来阻止保存操作,并弹出提示信息告知用户。 下面是一个示例代码: ```javascript $('#datagrid').datagrid({ // 配置列信息,包括编辑器和验证规则 columns: [{ field: 'name', title: '姓名', editor: { type: 'text' }, // 配置验证规则,设置为必填项 validate: { rules: { required: true }, messages: { required: '该字段为必填项' } } }, { field: 'age', title: '年龄', editor: { type: 'text' }, validate: { rules: { required: true }, messages: { required: '该字段为必填项' } } }], // 配置保存前的事件 onBeforeSave: function(index, row) { // 遍历列定义,判断必填项是否有值 var isValid = true; var columns = $(this).datagrid('getColumnFields'); for (var i = 0; i < columns.length; i++) { var field = columns[i]; var col = $(this).datagrid('getColumnOption', field); if (col.validate && col.validate.rules && col.validate.rules.required) { var value = row[field]; if (!value || value.trim() === '') { isValid = false; // 弹出提示信息 $.messager.alert('提示', col.validate.messages.required, 'warning'); break; } } } return isValid; } }); ``` 以上代码中,我们通过配置 `editor` 和 `validate` 属性来定义列的编辑器和验证规则。在 `onBeforeSave` 事件中,我们遍历列定义,判断必填项是否有值,若没有则阻止保存操作并弹出提示信息。 你可以根据自己的实际需求进行修改和扩展。希望能对你有所帮助!如有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值