Extjs 本身是一个加载慢的JS框架,这个需要程序员的多去优化,之前说过了JS的打包的优化 http://blog.csdn.net/dracotianlong/article/details/8547082
这次来写写怎么减少冗余代码,也是提高运行速度,包含了1、删除代码通用2、提交表单通用3、初始化Gird通用化 本次只写 删除代码优化
先贴出代码
/** * 获取个GridPanel的选择的记录 */ function $getGdSelectedIds(grid, idName) { var selRs = grid.getSelectionModel().getSelections(); var ids = Array(); for (var i = 0; i < selRs.length; i++) { ids.push(eval("selRs[i].data." + idName)); } return ids; } /** *删除 */ function $postDel(a) { Ext.Msg.confirm("信息确认", "您确认要删除所选记录吗?", function(b) { if (b == "yes") { Ext.getBody().mask("正在删除,请稍等"); Ext.Ajax.request({ url: a.url, params: { ids: a.ids }, timeout: 100000000,//default 30000 milliseconds method: "POST", success: function(c, d) { Ext.getBody().unmask(); Ext.ux.Toast.msg("操作信息", "成功删除该记录!"); if (a.callback) { a.callback.call(this); return; } if (a.grid) { a.grid.getStore().reload(); } }, failure: function(c, d) { Ext.getBody().unmask(); Ext.ux.Toast.msg("操作信息", "操作出错,请联系管理员!"); } }); } }); } /** * Gird批量删除操作 */ function $delGridRs(a) { var b = $getGdSelectedIds(a.grid, a.idName); if (b.length == 0) { Ext.ux.Toast.msg("操作信息", "请选择要删除的记录!"); return; } var c = { url: a.url, ids: b, grid: a.grid }; $postDel(c); }
单个删除代码优化结果由原来的24行代码修改为5行代码搞定,代码看上去也比较好看点。
var a = Ext.getCmp("PlanBookAllGrid"); //单个删除 $postDel({ url: __ctxPath + "/traincost/multiDelPlanBook.action", ids: b, grid: a });
批量删除也是一样
$delGridRs({ url: __ctxPath + "/traincost/multiDelPlanBook.action", grid:c.gridPanel, idName:'mainid' });