JQGrid:将数据加载到页脚行

7

有没有将数据加载到页脚的示例?我找不到任何示例,或者是因为我在工作中被阻止了。

提前感谢...


页脚是什么意思?你能给我们一个屏幕截图吗? - gurun8
2个回答

17

查看演示http://trirand.com/blog/jqgrid/jqgrid.html,在左边的树中选择“版本3.5中的新功能”,然后选择“摘要页脚行”。

在示例中,jqGrid的footerrow: true, userDataOnFooter: true选项被设置为一个集合。然后服务器添加userdata块到发送回jqGrid的数据中。你可以在http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data中了解关于userdata的信息。如果userdata块具有与jqGrid的列名称相对应的属性,则数据将显示在页脚行中。

如果您需要更多信息,您应该写明在jqGrid中使用了哪种类型的数据(JSON、XML、xmlstring、jsonstring、local等),以及您使用了哪种类型的服务器(PHP、ASP.NET MVC、WCF等)。

更新:如果您使用标准的JSON映射数据(没有jqGrid的jsonReader选项),从服务器传输的数据看起来像:

{ 
  total: "xxx", 
  page: "yyy", 
  records: "zzz",
  rows : [
    {id:"1", cell:["cell11", "cell12", "cell13"]},
    {id:"2", cell:["cell21", "cell22", "cell23"]},
      ...
  ]
}

所以数据没有从colModel获取列名。如果你有一个列{name:'price', ...}在colModel里面,而且想要在jqGrid的最后一行显示总价,你需要在jqGrid选项中定义footerrow: true, userDataOnFooter: true,并且你的服务器应该生成如下格式的数据:

{ 
  total: "xxx", 
  page: "yyy", 
  records: "zzz",
  rows : [
    {id:"1", cell:["cell11", "cell12", "cell13"]},
    {id:"2", cell:["cell21", "cell22", "cell23"]},
      ...
  ],
  userdata: {price:1240.00} 
}

如果您使用另一个jsonReader,则所有状态都不会改变。您唯一可以定义的是将"userdata"名称更改为其他名称,但必须使用与colModel中定义的字段名称相同的字段名称来定义对象值。只有这些字段的值才会显示在jqGrid的最后一行上。


@Oleg:又一篇很棒的答案,不过我还有一个问题,您是如何在页脚行中获取“总计”标签的,就像您在上面标记的演示中一样? - Mark
为了回答我之前的问题,我只需返回到用户数据中,在前一个字段的列名中添加一个“总计”值。 - Mark

4

上面的回答很有帮助。无论如何,这是我在MVC.Net中的做法:

首先,在网格定义上使用以下属性:

footerrow:true, userDataOnFooter:true

在HttpPost的操作结果中:

        [HttpPost]
        public ActionResult GetNewMembersByDate(string date1, string date2)
        {
            List<uspGetNewByDateResult> list =_reportsRepository.GetNewByDate(DateTime.Parse(date1), DateTime.Parse(date2));

            var amount = from p in list
                         select p.Quantity;


            var jsonData = new
            {
                total = 1,
                page = 1,
                records = list.Count(),
                userdata = new
                    {
                        Name = "Total:",
                        Quantity= amount.Sum().ToString()
                    },
                rows = (
                        from row in list
                        select new
                        {
                            i = row.RowNumber,
                            cell = new[] {
                                row.RowNumber.ToString(),
                                row.Name,
                                row.Quantity.ToString()
                            }
                        }).ToArray()

            };
            return Json(jsonData);
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接