jQuery MiniUI

 找回密码
 立即注册
查看: 12601|回复: 22
打印 上一主题 下一主题

datagrid增加行问题 [复制链接]

Rank: 3Rank: 3

跳转到指定楼层
楼主
发表于 2014-7-24 14:42:40 |只看该作者 |倒序浏览
当datagrid加载完成后,需要添加一行合计,不过合计行先出现,会被后面出现的数据覆盖,这个问题该怎么解决?

Rank: 8Rank: 8

沙发
发表于 2014-7-24 14:51:35 |只看该作者
什么意思,看不明白

Rank: 3Rank: 3

板凳
发表于 2014-7-24 15:02:33 |只看该作者
felt 发表于 2014-7-24 14:51
什么意思,看不明白

我直接贴代码吧
            //查询数据
            function search() {
            var concode = mini.get("btnEditC").getValue();
            var pcode = mini.get("btnEditP").getValue();
            var startDate = mini.get("startDate").getFormValue();
            var endDate = mini.get("endDate").getFormValue();
            var divs = document.getElementById("showDiv");
            divs.style.display='block';
            setDate(startDate,endDate);
            var stMonth = mini.get("hdstMonth").getValue();
            var endMonth = mini.get("hdEndMonth").getValue();
            var theYear = mini.get("hdYear").getValue();
            grid.setUrl("${pageContext.request.contextPath}/budget/cptPayAlsController/pageInfo");
            grid.load({ stMonth: stMonth ,endMonth:endMonth,theYear:theYear});
        }
            
            //设置显示的时间
            function setDate(startDate,endDate){
                    //获取统计年份
                    var theYear = endDate.split("-");
                    var thisYear = theYear[0];
                    //判断月份前面是否需要加1
                    var startCheck = startDate.charAt(5);
                    var endCheck = endDate.charAt(5);
                    //得到月份
                    var stMonth = 0;
                    var endMonth = 0;
                    if(startCheck  == 0) stMonth = startDate.charAt(6);
                    if(startCheck  == 1) stMonth = 1+startDate.charAt(6);
                    if(endCheck == 0) endMonth = endDate.charAt(6);
                    if(endCheck == 1) endMonth = 1+endDate.charAt(6);
                     
                    //显示选择的时间
                    $("#stMonth").html(stMonth);
                    $("#endMonth").html(endMonth);
                    $("#years").html(thisYear);
                   
                    mini.get("hdYear").setValue(thisYear);
                    mini.get("hdstMonth").setValue(stMonth);
            mini.get("hdEndMonth").setValue(endMonth);
            createGrid(stMonth,endMonth);
            }
            
            
            //动态添加列
            function createGrid(stMonth,endMonth) {
                    var  columns=[
                              { type: "indexcolumn" , width: 40, headerAlign: "center", allowSort: true,header:"行次"},
                              { field: "pcode", width: 80, headerAlign: "center", allowSort: true, header: "项目编码"},
                              { field: "year_budget", width: 80, headerAlign: "center", allowSort: true, header: "年度预算"},
                              { field: "allbud", width: 80, headerAlign: "center", allowSort: true, header: "月度现金预<br/>算合计"},
                              { field: "allpay", width: 80, headerAlign: "center", allowSort: true, header: "实际支出合<br/>计"},
                              { headerAlign: "center", allowSort: true, header: "现金预算执行情况",columns:[]}
                           ];
                for(var i = stMonth;i<=endMonth;i++){
                            var theMonth = months[i-1];
                            var newColumns = {headerAlign: "center", allowSort: true, header: theMonth,columns:[
                                      {field: "bun_mon"+i, width: 50, headerAlign: "center", allowSort: true, header: "预算"},
                                     {field: "pay_mon"+i, width: 50, headerAlign: "center", allowSort: true, header: "执行"},   
                                     {field: "wcl"+i, width: 50, headerAlign: "center", allowSort: true, header: "完成率"}
                                                                ]
                                          };
                            columns[5].columns.push(newColumns);
                    }
                grid.setColumns(columns);
                var indexs = grid.data.length;
                //grid.load();
                totalAll(stMonth, endMonth,indexs);
                
            }
            
            //添加合计行
            function totalAll(stMonth,endMonth){
                    var total = 0;
                for (var i = 0, l = grid.data.length; i < l; i++) {
                    var row = grid.data;
                    var num = new Number(row.lj);
                    var t=parseFloat(num.toFixed(1));
                    if (isNaN(t)) continue;
                    total += t;
                }
                var row = {
                            pcode:"<label style='font-weight: bolder;'>合计</label>",
                                bun_mon6:"50.1",
                                bun_mon7:"50.1"
                                };
                    //rows.push(row);
                        grid.addRow(row, grid.data.length+1);
            }

Rank: 8Rank: 8

地板
发表于 2014-7-24 15:21:52 |只看该作者
xss511 发表于 2014-7-24 15:02
我直接贴代码吧
            //查询数据
            function search() {

用表格自带的合计行好了
http://www.miniui.com/demo/#src=datagrid/summary.html
你的代码是在里面添加一行,固定的添加,如果数据有变动肯定加的那行就没了

Rank: 3Rank: 3

5#
发表于 2014-7-24 15:30:36 |只看该作者
felt 发表于 2014-7-24 15:21
用表格自带的合计行好了
http://www.miniui.com/demo/#src=datagrid/summary.html
你的代码是在里面添加 ...

这个自带的合计,可以像手动添加那样,控制合计和数据的显示位置吗?因为要合计的有多列,如果用自带的,显示效果就不好了。

Rank: 8Rank: 8

6#
发表于 2014-7-24 16:24:56 |只看该作者
xss511 发表于 2014-7-24 15:30
这个自带的合计,可以像手动添加那样,控制合计和数据的显示位置吗?因为要合计的有多列,如果用自带的, ...

你这样增加只能在表格操作的最后执行,如果有其他的表格操作,你这加的行肯定就被混掉了
所以还是建议用我们的汇总行
请参考我们的例子
http://www.miniui.com/demo/#src=datagrid/summary.html

Rank: 3Rank: 3

7#
发表于 2014-7-25 09:41:42 |只看该作者
felt 发表于 2014-7-24 16:24
你这样增加只能在表格操作的最后执行,如果有其他的表格操作,你这加的行肯定就被混掉了
所以还是建议用 ...

使用汇总行计算出来的数据,怎么能获取到呢?

Rank: 8Rank: 8

8#
发表于 2014-7-25 10:35:30 |只看该作者
xss511 发表于 2014-7-25 09:41
使用汇总行计算出来的数据,怎么能获取到呢?

1 汇总行我们提供了简单的计算方法,列上设置summaryType=ount|min|max|sum|avg,保证精确的话指定数据类型dataType="string|int|float|date|boolean|currency“
2 如果你要自己计算的话,可以在ondrawsummarycell事件里处理
http://www.miniui.com/demo/#src=datagrid/summary.html
3 你3楼贴的方法最大的问题是你添加行的时机不对,你数据加载grid.load在你添加行的方法setData之后,肯定就被覆盖了    你要用也必须在回调里处理grid.load({...},function(e){ setDate...})

Rank: 3Rank: 3

9#
发表于 2014-7-25 11:06:51 |只看该作者
felt 发表于 2014-7-25 10:35
1 汇总行我们提供了简单的计算方法,列上设置summaryType=ount|min|max|sum|avg,保证精确的话指定数据类 ...


如图,我是想把合计这一行的数据传到服务器,可是我不知道怎么去获取这一列的数据?
附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 8Rank: 8

10#
发表于 2014-7-25 14:32:38 |只看该作者
xss511 发表于 2014-7-25 11:06
如图,我是想把合计这一行的数据传到服务器,可是我不知道怎么去获取这一列的数据?
...

这个数据只有在ondrawsummarycell的时候获取
你设置一个全局变量,在这个事件的方法里取到数据,保存在变量里,后台提交的时候就把这个变量的数据取出来

Archiver|普加软件

GMT+8, 2025-7-20 21:05 , Processed in 1.041968 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部