有没有将数据加载到页脚的示例?我找不到任何示例,或者是因为我在工作中被阻止了。
提前感谢...
查看演示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的最后一行上。
上面的回答很有帮助。无论如何,这是我在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);
}