对easyui datagrid组件的一个小改进

对easyui datagrid组件的一个小改进

问题

在实际项目中使用datagrid时,受版面限制,有时候表格不能太大,这时候表格里面的内容就不能完全显示,用户需要经常拖动调整列宽才能看完整 长度不足

规划与思考

一览datagrid的API,有几点值得思考

  • fitColumns属性,True to auto expand/contract the size of the columns to fit the grid width and prevent horizontal scrolling ,这个属性是在datagrid本身的宽度足够的情况下才好用。
  • nowrap属性,True to display data in one line,这个属性是在datagrid本身的高度足够的情况下才好用。
  • onAfterRender事件,Fires after the view is rendered这个事件可以在表格渲染完成后再处理一些事情,再结合HTML中的title 属性,可以用来进行鼠标提示的设置。

代码的编写

确定方向是鼠标提示,可是提示放在哪里呢,这里就需要分析datagrid渲染完成后的HTML了

生成的HTML

可以看到表格的内容是在类名为datagrid-cell的div元素里面的,所以要写代码在这里增加title属性

刚开始的时候,我是直接修改onAfterRender事件的

  1. $.fn.datagrid.defaults.view.onAfterRender = function(tgt){
  2. $(tgt).datagrid("getPanel").find("div.datagrid-body").find("div.datagrid-cell").each(function(){
  3. var $Obj = $(this)
  4. $Obj.attr("title",$Obj.text());
  5. })
  6. }

后来发现对于有些已经有onAfterRender 事件的datagrid,会覆盖其原来的事件,所以经过一些代码细节的调整,变成这样

  1. var oriFunc = $.fn.datagrid.defaults.view.onAfterRender;
  2. $.fn.datagrid.defaults.view.onAfterRender = function(tgt){
  3. oriFunc(tgt);
  4. $(tgt).datagrid("getPanel").find("div.datagrid-body").find("div.datagrid-cell").each(function(){
  5. var $Obj = $(this)
  6. $Obj.attr("title",$Obj.text());
  7. })
  8. }

解决效果

增加鼠标提示 这也算是用户体验的一点提高

完整的示例及代码

DEMO

代码(项目常用jquery/easyui函数小结)

posted @   p2227  阅读(2825)  评论(12编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 单线程的Redis速度为什么快?
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示