`
JavaSam
  • 浏览: 955057 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ligerUi grid封装调用方法

 
阅读更多
/**
 * 获取页面参数
 */
function getPageSize(){
    var xScroll, yScroll;
    if (window.innerHeight && window.scrollMaxY) {
        xScroll = window.innerWidth + window.scrollMaxX;
        yScroll = window.innerHeight + window.scrollMaxY;
    } else if (document.body.scrollHeight > document.body.offsetHeight) { // all but Explorer Mac   
            xScroll = document.body.scrollWidth;
            yScroll = document.body.scrollHeight;
     }else { 
            xScroll = document.body.offsetWidth;
            yScroll = document.body.offsetHeight;
     }
    var windowWidth, windowHeight;
    if (self.innerHeight) { 
        if (document.documentElement.clientWidth) {
            windowWidth = document.documentElement.clientWidth;
        }
        else {
            windowWidth = self.innerWidth;
        }
        windowHeight = self.innerHeight;
    }else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode   
            windowWidth = document.documentElement.clientWidth;
            windowHeight = document.documentElement.clientHeight;
     }else if (document.body) { // other Explorers   
                windowWidth = document.body.clientWidth;
                windowHeight = document.body.clientHeight;
    }
    if (yScroll < windowHeight) {
        pageHeight = windowHeight;
    }
    else {
        pageHeight = yScroll;
    }
    if (xScroll < windowWidth) {
        pageWidth = xScroll;
    }
    else {
        pageWidth = windowWidth;
    }
    arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight);
    return arrayPageSize;
}

/**
 * 自适应iframe
 * @param {Object} down
 */
function dyniframesize(down){
    var pTar = null;
    if (document.getElementById) {
        pTar = document.getElementById(down);
    }
    else {
        eval('pTar = ' + down + ';');
    }
    if (pTar && !window.opera) {
        pTar.style.display = "block"
        if (pTar.contentDocument && pTar.contentDocument.body.offsetHeight) {
            pTar.height = pTar.contentDocument.body.offsetHeight + 20;
            pTar.width = pTar.contentDocument.body.scrollWidth + 20;
        }
        else 
            if (pTar.Document && pTar.Document.body.scrollHeight) {
                pTar.height = pTar.Document.body.scrollHeight;
                pTar.width = pTar.Document.body.scrollWidth;
            }
    }
}

/**
 * 判断iframe是否加载完毕
 */
function frameIsReady(iframe){
    if (!/*@cc_on!@*/0) { //if not IE
        iframe.onload = function(){
			return true;
        };
    }
    else {
        iframe.onreadystatechange = function(){
            if (iframe.readyState == "complete") {
				return true;
            }
        };
    }
	return false;
}
/**
 * 如果iframe还没有加载完成则延迟几秒后加载
 */
function delayLoad(s,call){
	window.setTimeout(call,s);
}
//重置grid
function resizeGrid(){
    if (jQuery(".l-panel-body").find(".l-grid-body2").css("height") != undefined) {
        var viewHeightTemp = window.parent.jQuery('#gridFrame').parent().height();
        var viewHeight = viewHeightTemp - 184;
        jQuery(".l-panel-body").find(".l-grid-body2").css("height", viewHeight);
        var viewWidth = 0;
        var grid = jQuery("#dg_pastbusicustInfo").ligerGrid();
        for (i = 0; i < grid.columns.length; i++) {
            if (grid.columns[i]._hide != true && grid.columns[i]._hide != "true") {
                viewWidth = viewWidth + grid.columns[i]._width;
            }
        }
        viewWidth = viewWidth - 1;
        jQuery(".l-panel-body").find(".l-grid-header-inner").css("width", viewWidth);
        jQuery(".l-panel-body").find(".l-grid-body-inner").css("width", viewWidth);
    }
}

/**
 * 合并单元格
 * @param {Object} gridid
 * @param {Object} columnid
 */
function mergecell(gridid, columnid){ //参数:表格id和列索引关键字,根据表格具体值来动态合并单元格
    var i, j, k, x;
    i = -1;
    k = 1;
    j = "";
    x = 0;
    var cellname = "";
    jQuery("td[idjQuery='|" + columnid + "']", gridid).each(function(){
        if (j == jQuery("div", this).text() || jQuery("div", this).text() == '') {
            jQuery(this).addClass("l-remove");
            k++;
            jQuery("td[id='" + cellname + "']", gridid).attr("rowspan", k.toString());
        }
        else {
            j = jQuery("div", this).text();
            var a = jQuery(this);
            cellname = a.attr("id"); //得到点击处的id
            k = 1;
            x = i;
        }
        i++;
    });
    jQuery(".l-remove").remove();
}

/**
 *模拟map
 */
Map = function(){
    var mapAddM = {
        /**
         * entry函数
         * @param {Object} key
         * @param {Object} val
         */
        entry: function(key, val, flag){
            this.key = key;
            this.value = val;
            this.flag = flag;
        },
        //put方法
        put: function(key, val, flag){
            this.store[this.store.length] = new this.entry(key, val, flag);
        },
        //get方法
        get: function(key){
            for (var i = 0; i < this.store.length; i++) {
                if (this.store[i].key === key) 
                    return this.store[i].value;
            }
        },
        //get方法
        getFlag: function(key){
            for (var i = 0; i < this.store.length; i++) {
                if (this.store[i].key === key) 
                    return this.store[i].flag;
            }
        },
        //remove方法
        remove: function(key){
            for (var i = 0; i < this.store.length; i++) {
                this.store[i].key === key && this.store.splice(i, 1);
            }
        },
        //keyset
        keySet: function(){
            var keyset = new Array;
            for (var i = 0; i < this.store.length; i++) 
                keyset.push(this.store[i].key);
            return keyset;
        },
        //valset
        valSet: function(){
            var valSet = new Array;
            for (var i = 0; i < this.store.length; i++) 
                valSet.push(this.store[i].value);
            return valSet;
        },
        //flagSet
        flagSet: function(){
            var flagSet = new Array;
            for (var i = 0; i < this.store.length; i++) 
                flagSet.push(this.store[i].flag);
            return flagSet;
        },
        //clear
        clear: function(){
            this.store.length = 0;
        },
        //size 
        size: function(){
            return this.store.length;
        },
        /**
         *  迭代子
         */
        iterator: function(){
            //TODO 待实现
            var obj = this.keySet();//所有的key集合
            var idx = 0;
            var me = {
                /**
                 * 当前key
                 */
                current: function(){
                    return obj[idx - 1];
                },
                /**
                 * 第一个key
                 */
                first: function(){
                    return obj[0];
                },
                /**
                 * 最后一个key
                 */
                last: function(){
                    return obj[obj.length - 1];
                },
                /**
                 * 是否还有下一个元素
                 */
                hasNext: function(){
                    idx++;
                    if (idx > obj.length || null == obj[obj.length - 1]) 
                        return false;
                    return true;
                }
            };
            return me;
        }
    };
    for (var method in mapAddM) {
        this.store = new Array;
        Map.prototype[method] = mapAddM[method];
    }
}

/**
 * 生成column
 * @param {Object} map
 */
function createColumns(map,gridWidth){
    var columns = [];
    var i = 0;
    for (var it = map.iterator(); it.hasNext();) {
        var currentKey = it.current();//本次循环的key
        var currentVal = map.get(currentKey);//当前value
        var currentFlag = map.getFlag(currentKey);//判断是否隐藏该列
        var columni = {};
        columni.name = currentKey;
        columni.display = currentVal;
        columni.align = 'center';
        columni.width = gridWidth?gridWidth:120;
        if ((currentFlag && (currentFlag == "hide"))) {
            columni.hide = 'true';
            columni.width = 0.1;
            
        }
        columns.push(columni);
        i++;
    }
    return columns;
}


/**
 * 请求数据之前
 */
function beforeLoad(){

}

/**
 * 数据渲染完成后
 */
function afterDataRend(){
    jQuery.ligerDialog.closeWaitting();
}

/**
 * 渲染grid
 * @param {Object} year
 * @param {Object} customer
 */
function renderLigerGrid(divId, data, map,gridWidth,callback){
	var opptions = {
        columns: createColumns(map,gridWidth),
        data: data,
		page:1,
        pageSize: 30,
        width: '100%',
        height: '100%',
        dataAction: 'server',
        onLoading: beforeLoad,
		cssClass:"myGrid",
		//rownumbers:true,//是否显示行号
		rowHeight:25,
        onLoaded: function (){
			afterDataRend();//加载完成之后
		},
		onAfterShowData : function(currenData){
		},
		onRendered:function (){
		},
        colDraggable: false,
        rowDraggable: false,
        enabledEdit: true,
        clickToEdit: false,
        clickToEdit: false,
		checkbox:window.parent.checkBox, 
        isScroll: true
    };
	if(!manager){
		//避免注册多次事件
		opptions.onDblClickRow = function (data, rowindex, rowobj){
			if(window.parent.dbClickRow)
				window.parent.dbClickRow(data,rowindex,rowobj);//如果父窗口有此事件则调用父窗口事件
        }
		manager = jQuery("#" + divId).ligerGrid(opptions);
	}else{
		//重新渲染
		manager.options.newPage = 1;
		manager.options.data = $.extend(true, {}, data);
        manager.loadData(true);
	}
}

/**
 * 通用ajax请求
 * @param {Object} _url
 * @param {Object} divId
 */
function render(_url, _data, divId, map,gridWidth,callback){
	try {
		//本地数据
		if(jQuery.parseJSON(_url)){
		   var d = jQuery.parseJSON(_url);
		   if (d.Total > 0) {
			   
                  renderLigerGrid(divId, d, map,gridWidth,callback);//请求成功
			}else{
                 renderLigerGrid(divId, d, map,gridWidth,callback);//请求成功
			}
		}
	} catch (e) {
	   //服务器数据
	    try {
	        jQuery.ligerDialog.waitting('正在加载数据...');
	        jQuery.ajax({
	            url: _url,
	            type: "post",
	            data: {
	                param: JSON.stringify(_data)
	            },
	            dataType: "json",
	            success: function(d){
	                if (d.Total > 0) {
		                    renderLigerGrid(divId, d, map,gridWidth,callback);//请求成功
					}
	                else{
		                    renderLigerGrid(divId, d, map,gridWidth,callback);//请求成功
					}
	                jQuery.ligerDialog.closeWaitting();
					if(callback){
						afterGridRendCallBack(callback);//渲染完成后回调函数
					}
	            },
	            error: function(a, b, c){
	            	jQuery.ligerDialog.error(a.status);
					jQuery.ligerDialog.error(a.readyState);
					jQuery.ligerDialog.error(b);
					jQuery.ligerDialog.error(c);
	                jQuery.ligerDialog.closeWaitting();
	            }
	        });
	    } 
	    catch (e) {
	        jQuery.ligerDialog.error(e);
	    }
	}
}

var manager;//ligerGridManager对象
/**
 * 生成文件
 * @param {Object} data
 */
function dataToTxt(data){
    var file_name = "C://temp.txt";
    file_name = file_name.split("//").join("////");
    var FSO = new ActiveXObject("Scripting.FileSystemObject");
    var f1 = FSO.CreateTextFile(file_name, true);
    f1.write(data);
    f1.close();
}
/**
 * 自定义表格渲染完后回调函数
 */
function afterGridRendCallBack(callback){
	var gridBody = jQuery("div.l-grid-body2");
	callback.apply(gridBody,arguments);
}

 /**
  * 获取url参数(主要解决iframe传递参数)
  */
 function getUrlParam(_url,key){
  if (_url.lastIndexOf("?") != -1) {
   var queryStr = _url.substring(_url.lastIndexOf("?") + 1, _url.length);
   if(!key)
    return queryStr;//返回所有参数
   else{
    var params  = queryStr.split("&");
    for(var j = 0 ;j < params.length;j++){
       var tmp = params[j].split("=");
       if(tmp[0]==key){
          return tmp[1];
          break;
       }
    }
   }
    
  }
 }

 

0
0
分享到:
评论
2 楼 JavaSam 2014-03-24  
JavaSam 写道
pipi1 写道
您好,请问您这个怎么调用呢?
能给个示例的话,那就太好了,谢谢啊


var _url = "test.do";
var map = new Map();
map.put("name","120");//列名,宽度
map.put("age","120")


render(_url,data,map,domid);//url,查询关键字,map,domid

1 楼 pipi1 2014-03-23  
您好,请问您这个怎么调用呢?
能给个示例的话,那就太好了,谢谢啊

相关推荐

    Ligerui Grid合并单元格

    Ligerui Grid合并单元格 ,指定列合并单元格,该合并是整列合并

    ligerui+Json_使用LigerUI的Grid和Java的Json实现数据显示

    如果数据发生变化,只需重新调用Grid的`loadData`方法即可刷新表格。 在实际开发中,你可能还需要关注以下方面: - 错误处理:处理服务器返回错误或网络异常的情况。 - 动态加载:设置`pageSize`和`remoteSort`...

    asp.net+Ligerui实现grid导出Excel和Word的方法

    本文实例讲述了asp.net+Ligerui实现grid导出Excel和Word的方法。分享给大家供大家参考,具体如下: 下面采用的导EXCEL方法,适合不翻页的grid,而且无需再读一次数据库,对于翻页的grid来说,要导全部,当然后台要再...

    ligerui之gird

    《深入解析LigerUI中的Grid控件》 在Web开发领域,前端框架的使用极大地提升了开发效率和用户体验。其中,LigerUI是一个优秀的JavaScript库,它提供了丰富的UI组件,包括我们今天要探讨的核心部分——Grid控件。...

    LigerUI之Grid使用详解(一)——显示数据

    在页面加载完成后,使用jQuery选择器找到Grid的容器,并调用`ligerGrid`方法: ```javascript $(document).ready(function() { var data = [ { name: "张三", age: 25, city: "北京" }, { name: "李四", age: 30...

    Ligerui Table导出excel 支持样式、冻结行列、图片等导出

    2. 调用导出方法,传入必要的参数,如是否保留样式、是否包含图片等。 3. 插件处理数据,生成Excel文件格式的内容。 4. 触发文件下载,用户保存文件到本地。 通过这个功能,开发者可以轻松地为用户提供数据导出服务...

    全套ligerui源代码和api以及示例

    LigerUI是一款基于JavaScript和CSS3的开源前端框架,它为开发者提供了丰富的UI组件和便捷的API接口,用于快速构建用户界面。此压缩包包含了LigerUI的全套源代码、API文档以及示例,旨在帮助开发者深入理解其内部工作...

    ligerui-LigerUI

    在实际开发中,你可以通过引入LigerUI的CSS和JS文件,然后调用对应的API来创建和配置组件。例如,要创建一个表格,你可以先定义一个HTML元素作为容器,然后使用LigerUI的表格插件对其进行初始化。通过这种方式,你...

    ligerui-LigerUI-V1.2.5.rar

    - **表格(Grid)**:LigerUI的表格组件支持动态加载、分页、排序、过滤、自定义列模板等功能,方便展示和操作大量数据。 - **表单(Form)**:表单组件提供了丰富的验证规则和联动效果,能够快速构建交互性强的...

    jQuery ligerUI Demos 导航页、菜单栏

    jQuery ligerUI是一款基于jQuery的前端开发框架,它提供了一系列丰富的UI组件,使得开发者能够快速构建具有专业界面的Web应用程序。在"jQuery ligerUI Demos 导航页、菜单栏"这个主题中,我们将深入探讨ligerUI如何...

    Jquery LigerUI 中文 API

    - **通用方法**:LigerUI 的大部分组件可以通过 jQuery 对象的 `ligerGetControl` 方法创建,例如创建一个简单的输入框: ```javascript $("#inputId").ligerTextBox(); ``` 3. **组件属性与配置** - **配置项*...

    ligerUI集合

    1. **ligerUI Grid(表格)**:Grid是ligerUI中的核心组件之一,用于展示和管理数据。它支持多种数据源,如JSON、XML等,并且具备排序、分页、过滤、编辑、行选择等多种功能,极大地提高了数据操作的便利性。 2. **...

    LigerUI demo及api文档

    这将为开发者提供一个直观了解LigerUI功能的平台,并且能够通过API文档深入理解各个组件的工作原理和使用方法。 描述中提到的"Source文件夹"可能包含了LigerUI的各种组件的源代码示例,这些示例通常包含了HTML、CSS...

    LigerUI1.2.5文档和库

    2. **组件指南**:详尽列出LigerUI提供的所有组件,如按钮、表格、下拉框、对话框等,解释每个组件的用途、属性、方法和事件。 3. **API参考**:列出框架的核心函数和对象,提供详细的参数和返回值说明,便于开发者...

    ligerUI 教程API手册

    ligerUI 教程API手册,方便查询

    jquery布局工具ligerUI

    2. **易于使用**:ligerUI的API设计简洁明了,只需通过简单的jQuery选择器和方法调用即可实现功能,降低了学习成本,方便开发者快速上手。 3. **响应式设计**:ligerUI支持多设备和多屏幕尺寸,可自适应不同的显示...

    jQuery ligerUI API

    1. **组件丰富**:ligerUI提供了如表格(Grid)、表单(Form)、下拉框(ComboBox)、树形控件(Tree)、日期选择器(DatePicker)、弹出层(Dialog)、提示信息(Message)等常用的前端组件,覆盖了大部分Web应用的...

    ligerUI的拖动效果demo

    《深入理解ligerUI的拖动效果:一个全方位的实战解析》 在现代网页开发中,用户交互体验的提升已经成为了一项重要的设计考量。ligerUI,作为一个强大的前端UI框架,以其丰富的组件和便捷的API,为开发者提供了实现...

    ligerUI全部实例

    ligerUI 的 API 文档详细介绍了每个组件的使用方法、参数配置、事件处理和示例代码,帮助开发者深入理解和灵活运用。 9. **示例使用** 包含的全部示例涵盖了 ligerUI 的所有功能,通过实际操作,开发者能直观地...

    西瓜定制LigerUi

    1. **组件丰富**:LigerUi提供了一系列UI组件,如表格(Grid)、表单(Form)、下拉框(ComboBox)、日期选择器(DatePicker)、树形结构(Tree)、对话框(Dialog)等,覆盖了日常开发中的多种场景。 2. **数据...

Global site tag (gtag.js) - Google Analytics