加载table控件

来源:互联网 发布:吃黑米必知6大禁忌 编辑:程序博客网 时间:2024/06/08 15:24
/**
 * Created by Administrator on 2015/4/28 0028.
 */
/**
 * xgrid控件js 包
 */
var _xgrid = {
    param : {
        tableTemplate : "",
        url : "",
        bodyobj : null,
        rfc:null,
        searchParam:null,
        fn:null,
        back:false
    },
    /**
     * 表格插件初始化 参数:表格id,数据请求url,json参数,rfn datamap回调函数,fn 循环每行回调函数
     */
    init : function() {
        var arglen = arguments.length;
        _xgrid.param.fn=null;
        _xgrid.param.rfn=null;
        if (!_xgrid.param.back)
            _xgrid.param.searchParam=null;
        var table = $("#" + arguments[0]);
        var url=arguments[1];
        if (table.length == 0) {
            yt.msg("需初始化的表格不存在", "e");
            return false;
        } else if (url==undefined || url == null) {
            yt.msg("需要加载数据的url地址不能为空", "e");
            return false;
        }
        $(table).after("<div id='kkpager' style='text-align: right;margin-right: 60px;'></div>");
        var data = {};


        if (arglen > 2&&arguments[2]!=null)
            data = arguments[2];
        if(arglen == 4&&arguments[3]!=null){
            _xgrid.param.rfc =arguments[3];
        }
        if(arglen == 5&&arguments[4]!=null){
            _xgrid.param.fn =arguments[4];
        }
        var bodyobj = $(table).find("tbody");
        _xgrid.param.tableTemplate = $(bodyobj).html();
        $(bodyobj).html("");
        _xgrid.param.url = url;
        _xgrid.param.bodyobj = bodyobj;
        if (_xgrid.param.back){
            _xgrid.param.back=false;
            _xgrid.loadTableData(null,_xgrid.page.param.pageNum);
        }else{
            _xgrid.loadTableData(data);
        }
    },
    //可传递参数,
    //第一个参数:参数对象
    //第二个参数:分页数字
    //第三个参数:不想显示的表格列,数组,从0开始;
    //第四个参数:回调函数
    loadTableData : function() {
        var hidetdArray=[];
        var data = {};
        var callfn=null;
        var arglen = arguments.length;
        if (arglen == 1) {
            data = arguments[0];
            _xgrid.param.searchParam=data;
            _xgrid.page.param.pageNum = 1;
        }
        if (arglen == 2) {
            data = _xgrid.param.searchParam;
            _xgrid.page.param.pageNum =arguments[1];
        }
        if (arglen == 3) {
            data = arguments[0];
            _xgrid.page.param.pageNum =1;
            if(_xgrid.param.searchParam==null)
                _xgrid.param.searchParam=data;
            hidetdArray=arguments[2];
        }
        if (arglen == 4&&arguments[3]!=null) {
            data = arguments[0];
            _xgrid.param.searchParam=data;
            _xgrid.page.param.pageNum =1;
            callfn=arguments[3];
        }
        try {
            data.pagenum = _xgrid.page.param.pageNum;
            data.pagesize = _xgrid.page.param.pageSize;
        } catch (e) {
            yt.msg("分页参数不存在!", "e");
            return false;
        }
        var obj = _xgrid.param.bodyobj;
        if (obj == null)
            return false;
        $(obj).hide();
        ytms.processData(_xgrid.param.url, data, function(d) {
            if (d.dataList == null) {
                //yt.msg("参数必须为一个JSON对象", "e");
                if(d.state="ERROR"){
                    yt.msg(d.message, "e");
                }
                return false;
            }
            var data = d.dataList;
            if(data==null)return false;
            var len = data.length;
            _xgrid.page.param.totalRecords = d.totalCount;
            _xgrid.page.init();
            if (len == 0)
                return false;
            var html = "";
            var re = new RegExp("#.*?#", "g");
            var paramList = (_xgrid.param.tableTemplate).match(re);
            for (var i = 0; i < len; i++) {
                var temp = _xgrid.param.tableTemplate;
                var slen = paramList.length;
                for (var j = 0; j < slen; j++) {
                    var v = yt.util.replaceAll(paramList[j], "#", "");
                    var vlist=null;
                    if(v.substring(0,1)!="$"){
                        vlist=v.split(".");
                        v=vlist[0];
                    }else{
                        v=yt.util.replaceAll(v,"$","");
                    }


                    var value = "";
                    try {


                        var typeobj=v.split(":");
                        if(typeobj.length==2&&typeobj[1]=="date"){
                            value=yt.util.formatDate(eval("data[i]." + typeobj[0]));
                        }
                        else{
                            value = eval("data[i]." + v);
                        }
                        if(value==null)value="---";
                        if(typeof value=="object"){
                            var valuez="";
                            $(value).each(function(i,v){
                                valuez+=","+eval("v." + vlist[1]);
                            });
                            value=valuez.substring(1);
                        }


                    } catch (e) {
                        value = "---";
                    } finally {
                        temp = yt.util.replaceAll(temp, paramList[j], value);
                    }


                }
                html += temp;


            }
            $(obj).html(html).show();
            var fn=_xgrid.param.fn;
            if(fn!=null)fn(data);


            var rfn=_xgrid.param.rfc;
            if(rfn!=null)
                rfn(d.dataMap);
            $(obj).find("tr").each(function(i,v){
                var tdlen=$(v).find("td").length;
                $("#orderhead th").show();
                for(var j=0;j<hidetdArray.length;j++){
                    if(hidetdArray[j]>=tdlen)break;
                    $(v).find("td").each(function(k,vs){
                        if(k==hidetdArray[j]){
                            $("#orderhead th:eq("+k+")").hide();
                            $(vs).hide();
                        }
                    });
                }
            });
            if(callfn!=null)callfn();
        });
    },
    /**
     * 分页配置
     */
    page : {
        /**
         * 分页参数
         */
        param : {
            pageSize : 10,
            totalRecords : 1,
            pageNum : 1
        },
        /**
         * 分页初始化
         */
        init : function() {


            // 生成分页
            // 有些参数是可选的,比如lang,若不传有默认值
            kkpager.generPageHtml({
                pno : _xgrid.page.param.pageNum,
                // 总页码
                total : Math.ceil(_xgrid.page.param.totalRecords
                    / _xgrid.page.param.pageSize),
                // 总数据条数
                totalRecords : _xgrid.page.param.totalRecords,
                lang : {
                    firstPageText : '首页',
                    lastPageText : '尾页',
                    prePageText : '上一页',
                    nextPageText : '下一页',
                    totalPageBeforeText : '共',
                    totalPageAfterText : '页',
                    totalRecordsAfterText : '条数据',
                    gopageBeforeText : '转到',
                    gopageButtonOkText : '确定',
                    gopageAfterText : '页',
                    buttonTipBeforeText : '第',
                    buttonTipAfterText : '页'
                },
                mode : 'click',// 默认值是link,可选link或者click
                click : function(n) {
                    _xgrid.page.param.pageNum = n;
                    _xgrid.loadTableData({}, n);
                    this.selectPage(n);
                    return false;
                }
            }, true);


            $("#kkpager_ChangePSize").val(_xgrid.page.param.pageSize);
        },
        //改变分页的页大小
        changePageSize:function(obj){
            _xgrid.page.param.pageSize=$(obj).val();
            _xgrid.loadTableData({},1);
        }
    }
};
0 0
原创粉丝点击