dhtmlx学习之dhtmlxgrid(二)-----setNumberFormat的用法

最终实现效果图:


 

我的初步代码:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Dhtml Grid</title>
<link rel="STYLESHEET" type="text/css" href="<%=path %>/js/dhtml/dhtmlx.css">

</head>
<body>

	<div id="mygrid_container" style="width:600px;height:150px;"></div>

	<script src="<%=path %>/js/jquery-1.5.1.js"></script>
	<script src="<%=path %>/js/dhtml/dhtmlxcommon.js"></script>
	<script src="<%=path %>/js/dhtml/dhtmlx.js"></script>
	<script type="text/javascript">
	    var mygrid;
	    $(document).ready(function(){
	    	
	    	mygrid = new dhtmlXGridObject("mygrid_container");
	    	
	    	mygrid.setImagePath("<%=path%>/image/dhtml/");

	    	mygrid.setHeader("name, age,birthday,price");
	    	
	    	mygrid.setInitWidths("100,50,*,100");
	    	
	    	mygrid.setColAlign("left,right,center");
	    	
	    	mygrid.setColSorting("str,int,date");
	    	
	    	mygrid.setColTypes("edtxt,ed,dhxCalendar,ron");
	    	
	    	mygrid.enableMultiselect(true);
	    	
	    	mygrid.setSkin("dhx_skyblue");
	    	
	    	mygrid.attachEvent("onRowSelect",doOnRowSelected);
	    	
	    	mygrid.init();
	    	
                <!--格式化数字,第二个参数是列号,从0开始-->
	    	mygrid.setNumberFormat("0,000.00",3,",","."); 
	    	
	         mygrid.loadXML('<%=path%>/student/dhtmlListStudent.do?vmTemplate=index2.vm');
	    });
	    
	</script>
</body>
</html>

 结果,大失所望,竟然没有setNumberFormat这个方法,查看官方文档才知道,setNumberFormat这个方法只有在专业版里才支持,而我用的是标准版。知道了原因,自然要想解决办法。

 

 基于目前网络上的资源,最新的能够下载到的专业版是dhtmlx-2.5-pro.rar,下载链接已经放上。对比了一下我自己的3.5标准版,发现关于setNumberFormat,标准版里缺少几个方法,

setNumberFormat : function(mask, cInd, p_sep, d_sep) {
        var yJ = mask.replace(/[^0\,\.]*/g, "");
        var pfix = yJ.indexOf(".");
        if (pfix > -1)
            pfix = yJ.length - pfix - 1;
        var Jd = yJ.indexOf(",");
        if (Jd > -1)
            Jd = yJ.length - pfix - 2 - Jd;
        if (typeof p_sep != "string")
            p_sep = this.i18n.decimal_separator;
        if (typeof d_sep != "string")
            d_sep = this.i18n.group_separator;
        var pref = mask.split(yJ)[0];
        var Om = mask.split(yJ)[1];
        this._maskArr[cInd] = [pfix, Jd, pref, Om, p_sep, d_sep]
    },
    _aplNFb : function(data, ind) {
        var a = this._maskArr[ind];
        if (!a)
            return data;
        var ndata = parseFloat(data.toString().replace(/[^0-9]*/g, ""));
        if (data.toString().substr(0, 1) == "-")
            ndata = ndata * -1;
        if (a[0] > 0)
            ndata = ndata / Math.pow(10, a[0]);
        return ndata
    },
    _aplNF : function(data, ind) {
        var a = this._maskArr[ind];
        if (!a)
            return data;
        var c = (parseFloat(data) < 0 ? "-" : "") + a[2];
        data = Math.abs(Math.round(parseFloat(data) * Math.pow(10, a[0] > 0 ? a[0] : 0))).toString();
        data = (data.length < a[0] ? Math.pow(10, a[0] + 1 - data.length).toString().substr(1, a[0] + 1) + data.toString() : data).split("").reverse();
        data[a[0]] = (data[a[0]] || "0") + a[4];
        if (a[1] > 0)
            for (var j = (a[0] > 0 ? 0 : 1) + a[0] + a[1]; j < data.length; j += a[1])
                data[j] += a[5];
        return c + data.reverse().join("") + a[3]
    },

 那么,此时,我们需要做的就是把这几个方法拷贝到dhtmlxgrid.js中的相同位置。

最后,我们在页面中引入dhtmlxgrid.js,大功告成!

1 之前上传了dhtmlx的官方demo上去 都很久了 (http: download csdn net detail pxzsky 2946815)看大家最近有需求 希望得到实际的使用代码 因为组件很多 所以我觉得大家可能对一些核心组件还是很感兴趣的 特别是分页列表 树等 这个在项目测试中我都用过了 这次先把列表的拿出来 2 因为涉及版权问题 如果你的产品要开源或者花钱购买授权 都没问题 否则最好还是仅仅内网学习使用 否 则需要考虑后果的 目前dhmtl只有GPL协议和商业协议 3 在我的其他资源中也有关于列表和树的组件使用示例: http: download csdn net detail pxzsky 6659071 这个工程是免费的(也可以认为开源) 里面使用了dhtml tree grid 很多地方用了tree 而grid目前只剩下角色管理列表了 后续也不想再用grid了 你可以参考 如果不想麻烦 那么就接着往下看 4 在它的免费版中(就是可以开源的) 最早(2 5)是没有分页库的 只有商业版有 后来经过高人指点 得到了crack 带有分页js库 很好用 其实主要是知道js中要传递的分页参数名字就ok了 5 资源包中有具体使用代码和组件的整个js 前端使用jsp 你只需要看分页那部分即可 其他的传的变量可以不管 以下粘贴重要的ui代码调用: <script type "text javascript"> var currpage <% request getParameter "cntPage" %>; 记录当前页面 $ document ready function { 初始化列表 initGrid ; } ; window dhx globalImgPath "${ctx} images public "; 初始化列表 function initGrid { showSkyLoading "数据加载中 请稍候 " ; mygrid new dhtmlXGridObject "projectlist" ; mygrid setImagePath " script dhtml grid imgs " ; mygrid setHeader "客户 项目 状态 是否ZZ 审核 提交时间 提交人 编辑 删除" ; mygrid setInitWidths " 180 90 50 70 90 70 50 50" ; mygrid setColAlign "left left left center left left left left left" ; mygrid setColTypes "ro ro ro ro ro ro ro ro ro" ; mygrid enableAutoHeight true "460" ; mygrid init ; mygrid setSkin "gray" ; mygrid enablePaging true ${splitPageSize} 5 "pagingArea" true "recinfoArea" ; mygrid loadXML "${ctx} project getProjectList action userScope " + ${userScope} ajustDms "xml" ; } function ajustDms { hideSkyLoading ; ajustFrameDms ; if currpage null && currpage "" && currpage "null" { mygrid changePage currpage ; } } < script> 后台接收分页参数: int iposStart 0; String posStart this getParameter "posStart" ; 相当于request getParameter "posStart" ; if posStart null && posStart equals "" { iposStart Integer parseInt posStart ; } int splitPageSize PreferenceUtil getSplitPageSize ; 当前列表分页条数配置(pageSize) 默认15条 SplitPageInfo spi new SplitPageInfo ; spi setPageSize splitPageSize ; 设置当前页信息 int currentPage 0; currentPage iposStart splitPageSize + 1; spi setCurrentPage currentPage ; 因为这个版本已经很老了 所以在IE10或其他新浏览器中会有些变形 如果用新版本 这个分页库能不能继续使用只有自己再尝试了 希望这个对大家有用 ">1 之前上传了dhtmlx的官方demo上去 都很久了 (http: download csdn net detail pxzsky 2946815)看大家最近有需求 希望得到实际的使用代码 因为组件很多 所以我觉得大家可能对一些核心组件还是很感兴趣的 特别是分页列表 树等 [更多]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值