如图所示,要在网页上生成类似的Table,而且要求数据区域是可编辑的,还要能存放到数据库中,
看到这复杂的表结构,Gridview是用不了了,现在只能用Js和Ajax来实现,可是对于数据库的设计和编辑后如何存放数据库我还是一头雾水,不知道有没有哪位前辈做过类似的项目么有,给点建议啊!
更变态的需求:User 可以根据需要选择显示数据的范围,比如如果勾选了第二周,表格就自动在右边增加第二周的七列来显示第二周的数据,如果勾选了模具号"#3",则自动在下面生成一行。
今天搞的我头都大了,现在只实现了下面的内容
1.用一维表存放数据,即将所有的数据存放到一张表中,数据存放如下
查询时候用行列转换来模拟交叉表的查询,
查询结果如下
2.生成Table后输出到前台页面生成表格,然后用了个Jquery插件来合并行,列来达到上图的效果
3,用了一个Jquery插件来实现点击td时候可以编辑。
4,目前做出来的效果如下
现在最主要的问题是编辑后的数据如何回填到数据库呢,由于表格不对称,不知道如何拼接生成Json字符串。
在合并列之前,你可以为每个单元格添加数据键,例如
这样在数据修改的时候,就可以通过这个表格单元格获取到数据键了。
好方法,的确是一个捷径啊。
不知道你以前有没有做过类似的项目呢,希望能和你交流一下。
@Gamain: 做过一个报表项目,根据动态数据源生成报表,但是没有要求对数据区可编辑。欢迎交流,我的msn:klicevip@yahoo.com.cn
@klice: 写了一大堆JS和复杂的T-sql终于是把报表的显示做出来了,事实上这个截图是指需求中的一个,还有好多不同结构的报表,我现在只是做了Demo对技术上可行性评估一下。
可是存在的一个最大的问题是还没有找到一个公用的方法,如果User的需求稍有变动,比如报表结构稍微变动,我所有的逻辑(包括JS,T-sql,后台代码)肯能都要修改,不知道你以前做报表项目的时候有没有遇到过类似的问题。
ExtJs之类的框架没有仔细研究过,不知道是否支持类似的多维报表。
公司网络加域,现在没有权限上MSN,悲剧。
@Gamain: 我查了一下extjs,支持合并列和可编辑列,至于合并行,好像只有一个类似行分组的功能,可能需要查看一下extjs的源码并加以扩张了。。
合并列:http://dev.sencha.com/deploy/ext-4.0.0/examples/grid/group-header-grid.html
可编辑列:http://dev.sencha.com/deploy/ext-4.0.0/examples/grid/cell-editing.html
行分组:http://dev.sencha.com/deploy/ext-4.0.0/examples/grid/groupgrid.html
@klice: 我研究了一下那个用Data Key存放数据的方法,感觉没有实现,不过还是非常感谢你的帮助。
想在网上找一点类似的资料也没有找到,特别是编辑后回填数据库那一块,不知道用什么方式会比较好,是不是这种需求不太靠谱大家都没有做过啊,O(∩_∩)O~。
@Gamain: 能说说为什么没有实现吗?
我觉得如果用extjs的话,只要使用原始数据生成表格,不需要data key也可以了,只是要指定哪些数据列合并,哪些数据行合并。
我觉得你的json数据结构域你的数据库的结构一致即可!
是啊,可是合并行之后的Table就不对称了(有些格子占用两行),如何提取数据呢?
@Gamain: 表头不需要保存的
@Gamain: 我的意思是合并的单元格不需要保存的
@ChatinCode: 表头是不用保存,可是保存的时候需要读取表头的键值来保存到数据,比如第一个数据5000,你要找到day:sun,week:week01,Type:ACT,MachineNo:No.1等。但是这个表格又是多维的,不能直接找到这些数据。
json的格式你先弄明白,其他事情可能就解决了
这种事情,是比较麻烦。我有一套完整的解决方案。基本上像这些都是小case。不过一两句说不清楚。
啊?能给一个比较好的解决方案的话真是太感谢了。
希望能给点指点啊,能否加我我的QQ 328638061呢。
能否给个Demo参考一下呢