`
hexiaodong
  • 浏览: 65201 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

用SigmaGrid制作报表

阅读更多
SigmaGrid为你制作web报表提供了一个新的选择。用SigmaGrid制作报表的优点:
1、可以在浏览器上进行分组聚合运算,充分利用客户端cpu的计算能力。
2、在浏览器上生成分页打印页面,根据程序定义或者用户选择的多种参数进行分页计算,使最终打印出来的报表充分匹配客户端的打印机和纸张类型,使报表更美观。
3、代码编写简单。
4、灵活的二次开发。充分利用js脚本语言的强大功能,让你自如定义分组合计行的内容。

实例为证:
从服务器获得的对象集合:
{period:"07年3月",goods:{id:4,code:"CL004",name:"丝绸面料",unit:"米"},storage:{id:1,name:"原料仓库"},initAmount:60,initMoney:3000,inAmount:150,inMoney:7500,outAmount:200,outMoney:10000,finalAmount:60,finalMoney:3000},
{period:"07年3月",goods:{id:5,code:"CL005",name:"涤纶面料",unit:"米"},storage:{id:1,name:"原料仓库"},initAmount:200,initMoney:2000,inAmount:300,inMoney:3000,outAmount:440,outMoney:4400,finalAmount:200,finalMoney:2000},
{period:"07年3月",goods:{id:6,code:"CL006",name:"丝棉混纺面料",unit:"米"},storage:{id:1,name:"原料仓库"},initAmount:300,initMoney:6000,inAmount:800,inMoney:16000,outAmount:900,outMoney:18000,finalAmount:300,finalMoney:6000},
...


列模型申明:
		
{name:"period",caption:"会计期",width:60,mode:"string"},
{name:"goods.code",caption:"商品编码",width:80,mode:"string",align:"center"},	
{name:"goods.name",caption:"商品名称",width:80,mode:"string"},
{name:"goods.unit",caption:"单位",width:40,mode:"string",align:"center"},
{name:"storage.name",caption:"仓库",width:80,mode:"string"},
{name:"initiatory",caption:"期初",children:[
	{name:"initAmount",caption:"数量",width:40,mode:"number",format:"#"},
	{name:"initMoney",caption:"金额",width:80,mode:"number",format:"#.000"}
]},
{name:"currentIn",caption:"本期入库",children:[
	{name:"inAmount",caption:"数量",width:60,mode:"number",format:"#"},
	{name:"inMoney",caption:"金额",width:80,mode:"number",format:"#.000"}
]},
{name:"currentOut",caption:"本期出库",children:[
	{name:"outAmount",caption:"数量",width:60,mode:"number",format:"#"},
	{name:"outMoney",caption:"金额",width:80,mode:"number",format:"#.000"}
]},
{name:"final",caption:"期末",children:[
	{name:"finalAmount",caption:"数量",width:60,mode:"number",format:"#"},
	{name:"finalMoney",caption:"金额",width:80,mode:"number",format:"#.000"}
]}


按会计期分组聚合的报表生成代码:
function report1(){
	var context = {
		sequence:true,checkBox:false,readonly:true,locked:3,sortable:false,
		groupBy:{keyName:"period",groupsOrder:{column:"period",order:"asc"},rowsOrder:{column:"goods.name",order:"asc"},aggregate:[{column:"inMoney",exp:"sum"},{column:"outMoney",exp:"sum"},{column:"finalMoney",exp:"sum"}],view:"oThis.rows[0].rowData.p$('period')+'入库金额:'+eval(oThis.values()['inMoney'])+'元,'+oThis.rows[0].rowData.p$('period')+'出库金额:'+eval(oThis.values()['outMoney'])+'元,'+oThis.rows[0].rowData.p$('period')+'余额:'+eval(oThis.values()['finalMoney'])+'元'"},
		paintMode:"page"
	};	
	grid = new SigmaGrid("gridbox",context,columns);
	grid.bindData(data);
}

效果参见附件1

按仓库分组聚合的报表生成代码:
function report2(){
	var context = {
		sequence:true,checkBox:false,readonly:true,locked:3,sortable:false,
		groupBy:{keyName:"storage.id",groupsOrder:{column:"storage.name",order:"asc"},rowsOrder:{column:"goods.name",order:"asc"},aggregate:[{column:"inMoney",exp:"sum"},{column:"outMoney",exp:"sum"},{column:"finalMoney",exp:"sum"}],view:"oThis.rows[0].rowData.p$('storage.name')+'入库金额:'+eval(oThis.values()['inMoney'])+'元,'+oThis.rows[0].rowData.p$('storage.name')+'出库金额:'+eval(oThis.values()['outMoney'])+'元'"},
		paintMode:"page"
	};	
	grid = new SigmaGrid("gridbox",context,columns);
	grid.bindData(data);
}

效果参见附件2

从例子中可以看出来,你可以用一个ajax请求获得报表的基本数据,然后用户可以选择各种不同分组聚合模式在客户端生成报表。从而减少网络流量,提供更好的用户体验。
  • 大小: 1.4 MB
  • 大小: 1.5 MB
分享到:
评论
10 楼 jxzhit 2008-04-11  
请问怎么样取到具体表格里面的值呢?
提供的grid.getValue().toJSONString()是取到所有的内容,我想只取到数据.
9 楼 hexiaodong 2007-05-21  
grid.getValue()可以获得表格中所有行对象的数组
也可以用grid.getValue(["col1","col2",...])获得经过属性裁减的所有行对象的数组。
获得值对象数组后,你可以通过xmlhttprequest把数组post到后台,在后台解析json数组,你可以用dwr或者json rpc来实现js对java bean 的远程调用。
8 楼 dafuh 2007-05-21  
不好意思 在顺便问一句 表格里的数据保存时如何提交到后台 action 里面怎么获取数据 谢谢
7 楼 dafuh 2007-05-21  
好的 非常感谢
6 楼 hexiaodong 2007-05-21  
这个功能我有,当然也是根据xmlhttprequest实现的。但这个不属于控件本身的功能,我在SigmaRequest里面实现了类似功能。
在SigmaGrid里面,你可以这样填充数据:

request.open("post",url,false);
request.onresult = function(){
  grid.bindData(request.getValue().data);
}
request.send();

这个的实现,比你的例子稍微复杂一些,但对服务器端要求要少一些,你可以在服务器端传回任意命名的一个数组。而你的例子中,传会的对象的命名可能有要求。假如你要用你提到的这种方式命名的话,你提供一个约定的显示的数组的名称,我也是可以帮你实现的。
5 楼 dafuh 2007-05-21  
我是想知道 SigmaGrid 是不是也有这个类似的功能 不要看例子 看问题
4 楼 hexiaodong 2007-05-21  
你这问题和本贴主题可谓十万八千里哦

不过,我可以大致上解释下你的问题.
在你所提到的控件中,TreeLoader能够用xmlhttprequest访问dataurl制订的url,获取其中的数据,并用这些数据填充Tree控件
3 楼 dafuh 2007-05-21  
不错 看了一下 但没看明白怎么从一个给定的url取数 类似
    var tree = new Tree.TreePanel('tree-div', {
        animate:true,
        loader: new Tree.TreeLoader({dataUrl:'get-nodes.php'}),
        enableDD:true,
        containerScroll: true
    });
于 daraUrl 这样 有明白的吗?
2 楼 hexiaodong 2007-04-25  
完全是客户端js代码,恐怕没有可能导入到pdf,不过导入excel还是可以的
1 楼 hgq0011 2007-04-25  
看起来挺不错的。
它能够到入到excel或pdf中吗?

相关推荐

    Sigma grid 2.4.13 release

    Sigma grid 最终版本。。。 由纯javascript写成,是一个开源的AJAX数据网格,能滚动和排序显示和内嵌数据编辑功能,是非常强大且易于使用的表格,支持php...不会使用 gt-grid 的同学可以参考 Sigma grid 的源码。。。

    sigmagrid文件夹.zip

    "sigmagrid文件夹.zip" 是一个包含有关sigma_grid/gt_grid相关资源的压缩包,主要目的是提供最新的使用手册、API文档以及示例代码,帮助用户理解和应用这个库。sigmaGrid是一个专门用于处理网格数据的工具,可能在...

    Sigma Grid ajax动态表格(支持分页、列宽拖动、数据排序).

    10. **文档与示例**:为了方便开发者使用, Sigma Grid 应该提供详尽的API文档和丰富的示例代码,帮助开发者快速理解和应用这个组件。 从压缩包中的"codefans.net"来看,这可能是 Sigma Grid 的源代码或示例代码的...

    Sigma-Grid.zip_grid_grid jquery_html jquery_jquery grid

    这个压缩包包含了关于 Sigma Grid 的使用指南和可能的示例文档。 1. **jQuery 插件介绍**:jQuery 是一个广泛使用的JavaScript库,简化了HTML文档遍历、事件处理、动画制作以及Ajax交互。Sigma Grid 是构建在jQuery...

    Sigma Grid 研究及使用

    "Sigma Grid 研究及使用"这一主题主要聚焦于一个特定的数据展示工具或框架,Sigma Grid,可能是用于开发人员在构建数据密集型应用时使用的组件。从给出的标签"源码"和"工具"来看,我们可以推断这可能是一个开源项目...

    sigma grid api

    sigma grid api sigma grid api sigma grid api sigma grid api sigma grid api sigma grid api

    sigma grid

    "Sigma Grid"是一种高效的数据网格组件,主要用于JavaScript(JS)开发环境,特别是在Web应用程序中处理大量数据时。它提供了一种强大的方式来显示、编辑和操作表格数据,具有高性能和可定制性。以下是对"Sigma Grid...

    Sigma_Grid api 使用手册

    **Sigma Grid API 使用手册** Sigma Grid 是一款强大的数据网格组件,尤其适用于开发具有复杂数据处理需求的业务应用程序。它的API提供了丰富的功能,让开发者能够高效地管理、展示和操作大量数据。本手册将深入...

    sigma_grid api使用手册 教程示例

    《sigma_grid与gt_grid API 使用手册教程全解析》 在当今的数据分析和处理领域,高效且易用的工具是至关重要的。"sigma_grid" 和 "gt_grid" 是两个备受推崇的库,它们提供了强大的数据网格处理功能。这篇教程将深入...

    Sigma Grid

    Sigma Grid是一个采用纯javascript开发的Ajax数据表格。特性包括: 1.基于CSS控制外观,内置Classic、Vista、Mac、XP四种风格。(可以自己改变风格哦) 2.提供单元格直接编辑功能,可以自定义编辑器,为单元格设置...

    sigma grid API

    使用sigma grid API,开发者可以快速构建出功能完善的表格应用,提高开发效率,同时提供用户友好的交互体验。通过熟练掌握和应用这个API,你可以为你的Web应用带来更加专业和高效的数据展示解决方案。

    flexigrid、sigmagrid、datatables使用

    标题 "flexigrid、sigmagrid、datatables 使用" 涉及到的是三种不同的JavaScript数据网格库,常用于Web应用程序中的数据展示和操作。这些库可以帮助开发者在网页上以表格形式展示大量数据,并提供排序、过滤、分页等...

    sigma_grid2.4

    "sigma_grid2.4"是一款专门用于开发网格布局的控件,它在IT行业中主要用于构建数据密集型的应用程序,如数据库管理工具、数据分析界面或报表系统。Grid控件是用户界面设计中的关键元素,它允许用户以表格的形式查看...

    sigma grid一个使用的jar包

    通过GridServerHandler类可以直接往前台传送sigma grid需要的数据,只要把此数据放到一个List中,赋给GridServerHandler的data,就可以将数据传给sigma grid。此外此jar包还封装了导出excel,同样将数据放到List中,...

    Sigma Grid实现ajax动态表格(支持分页、列宽拖动、数据排序).zip

    这个压缩包包含的资源是关于如何使用Sigma Grid实现一个通过Ajax动态加载数据、支持分页、列宽可拖动以及数据排序的功能。以下是这些知识点的详细说明: 1. Ajax动态加载: Ajax(Asynchronous JavaScript and XML...

    Sigma Grid ajax动态表格(支持分页、列宽拖动、数据排序)

    内容索引:脚本资源,Ajax/JavaScript,表格,表格排序,分页 Sigma Grid 核心基于javascriptajax,显示样式全部有CSS控制,可自定义多种显示风格,官方提供UI编辑器,支持鼠标拖动列宽、数据行排序,动态分页等功能,可...

    sigma一个很好用的客户端控件

    在文件名称 "sigma_grid_release" 中,我们可以推测这可能是一个关于 Sigma 数据格栅(Grid)的发布版本。数据格栅是 Sigma 控件集中的一个重要部分,它用于展示和操作表格数据。 Sigma Grid 可能具有排序、过滤、...

    sigma_grid_with_csharp

    "sigma_grid_with_csharp"是一个基于ASP.NET技术的开发示例,主要展示了如何利用C#语言来实现一个功能丰富的AJAX网格控件。这个控件主要用于数据展示,它结合了现代Web开发中的异步更新技术和高效的数据绑定能力,...

    Sigma1.12.zip

    首先,我们要明确的是,"Sigma hackers"标签可能指的是这个工具主要服务于网络安全专家,白帽黑客或安全研究人员,他们使用此类工具来测试系统的安全性,识别潜在漏洞,并确保网络环境的安全。 Sigma 提供了一套全面...

Global site tag (gtag.js) - Google Analytics