关于easyui中数据型控件使用的一些总结

easyui是个非常棒的jquery插件,不管从性能到美观,兼容性上都比较屌,一般的数据控件(如datagrid,tabs,tree)操作时最好将初始化和数据绑定分开做。先想想为什么?

我们先来谈谈坏处是什么:

1.前台最常见的就是增删改查操作,试想下如果初始化和绑定数据一起操作岂不是初始化重复了。

2.像tabs这种切换控件一般里面还要嵌套其他数据型控件,每次切换都要初始化嵌套的控件,效率低更重要的是消耗不必要的浏览器内存。

ps:我做过一个实时刷新的项目,tabs内嵌套datagrid,在实时刷新时,如果初始化和绑定数据同时做的话,datagrid会出现闪动现象(datagrid的列宽度随着刷新来回变换)。原因是每次健在数据前都要初始化一次,datagrid默认的列换是0,这样刷新一次列宽由0变为设定的宽度这样循环下去。呵呵,是不是很操蛋的感觉。我最初以为是easyui的bug,仔细想想还是我的问题。

发散:如果有些特殊的业务,比如动态更新列名,或者column下的函数(如styler,formatter)这些看起来不好“分开”(初始化和绑定数据)的业务。

解决办法:

1.比较普遍的做法是,把所有规则都先在column的style,formatter等函数中写好。后台返回的数据改变并不影响。这个也比较科学。2.也有不太常规的做法,,获取数据后,获取dg的columns对象,对column中的style,formatter等函数进行调整。代码如下:

$("#dg").datagrid('loadData', obj);//获取dg列名var fileds = $("#dg").datagrid('getColumnFields');for (var i = 1; i < 7; i++) { //获取dg的特定列对象var column = $("#dg").datagrid('getColumnOption', fileds[i]);column.styler = function (value, row, index) {if (obj.rows[index].g + '' + i + '' == "1" && index > 1 && index <= 25) {return 'color:red;';}}}比如动态更新列名这个就适合第二种办法。

坏处基本这么多,那么好处就,呵呵。。。。。

所以在使用easyui的数据型控件是初始化和数据绑定最好分开做。

别外附上自己一些关于easyui的心得,希望对初学者有用:

1.easyui的容器组件用html初始化更好,而数据型控件最好用脚本初始化,可控性,维护性更好。

2.所有的easyui的数据型控件都应该放在easyui的容器组件中,如datagrid的父级应该是panel。

3.fit是根据父级撑满的,效果不好时记得找他爹。

4.layout中必须存在center,但如果layout只存在center,不如直接用panel.

5.大量的使用easyui控件时不妨先建个util.js,用于初始化各种控件,用的时候直接引用更新就行。

这个社会是存在不公平的,不要抱怨,因为没有用!人总是在反省中进步的!

关于easyui中数据型控件使用的一些总结

相关文章:

你感兴趣的文章:

标签云: