jqGrid - 如何在jqGrid中计算列?

3
我正在开发一个ASP MVC 2 应用程序。它有一个jqGrid,网格中的数据是由控制器返回的JSON对象填充的。我的网格有3列'UnitNo'、'Area'和'Rate per sqm'。这些列的值从数据库中检索出来。现在我需要添加第四列'Unit Price',它是通过将'Area'和'Rate per sqm'相乘计算得出的。我该如何实现这一点?有没有办法在jqGrid中添加一个计算列?或者我可以在控制器中进行计算,并将其作为行单元格的新元素添加吗?
以下是我的控制器代码:
public JsonResult GetERVList()
    {
        var ervRep=new ERVRepository();
        IList<ERVMaster> list = ervRep.ListERVData();
        int pageSize = 50;
        int totalRecords = list.Count();
        var totalPages = (int)Math.Ceiling(totalRecords / (float)pageSize);
        var jsonData = new
        {
            total = totalPages,
            pageSize,
            records = totalRecords,
            rows = (from ervdata in list
                    select new
                    {
                        i = ervdata.Id,
                        cell = new[]
                            {
                                ervdata.UnitNo,
                                ervdata.Area, 
                                ervdata.RatePerSQM


                            }

                    }).ToArray()
        };
        return Json(jsonData, JsonRequestBehavior.AllowGet);

我的 jqGrid 代码如下:

<script type="text/javascript">
jQuery(document).ready(function () {
    jQuery("#list").jqGrid({
        url: '/ERV/GetERVList/',
        datatype: 'json',
        mtype: 'GET',
        colNames: ['Unit', 'Area', 'Rate per SQM'],
        colModel: [ { name: 'UnitNo', index: 'UnitNo' },
                    { name: 'Area', index: 'Area' },
                    { name: 'RatePerSQM', index: 'RatePerSQM' }],
        pager: jQuery('#pager'),
        rowNum: 10,
        rowList: [5, 10, 20, 50],
        sortname: 'Id',
        sortorder: "Id",
        viewrecords: true,
        caption: 'My first grid'
    });
});

感谢您的提前帮助,Ancy。
1个回答

7

我知道我来晚了,但这会帮助任何想要计算派生列的人。

在jQgrid v4.0中,以下内容应该有效:

根据以下方式更改colNames和colModel配置:

colNames: ['Unit', 'Area', 'Rate per SQM', 'Unit Price'],
colModel: [ { name: 'UnitNo', index: 'UnitNo' },
            { name: 'Area', index: 'Area' },
            { name: 'RatePerSQM', index: 'RatePerSQM' },
            { name: 'RatePerSQM', index: 'RatePerSQM',
              formatter: function (cellvalue, options, rowObject) 
                         {
                             return rowObject["Area"] * cellvalue
                          }
            }],

colmodel 包含重复的列名。cellvalue 引用了自身。所以似乎不起作用。可能需要使用列索引。 - Andrus

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