日期:2014-05-16  浏览次数:20310 次

【Extjs 优化一】 删除代码优化

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'
        });