数据未在jqgrid中显示

时间:2016-05-13 10:31:40

标签: asp.net-mvc linq jqgrid

我正在使用jqgrid来显示,排序和过滤记录。目前,我已经开始使用js代码了,但我认为我的控制器代码有问题,而不是填充网格。我只能看到一个空的blak jqgrid,消息“没有要显示的记录”。请让我知道什么是错的。
这是我的代码:
控制器:

public JsonResult GetData(string sidx, string sord, int page, int rows)
    {
        int pageIndex = Convert.ToInt32(page) - 1;
        int pagesize = rows;
        var custList = db.Customers.Select(
                                    c => new
                                    {
                                        c.ID,
                                        c.Company,
                                        c.FirstName,
                                        c.EMail,
                                        c.Status
                                    });
        int totalCustomers = custList.Count();
        var totalPages = (int)Math.Ceiling((float)totalCustomers / (float)rows);
        if(sord.ToUpper() == "DESC")
        {
            custList = custList.OrderByDescending(s => s.FirstName);
            custList = custList.Skip(pageIndex * pagesize).Take(pagesize);
        }
        else
        {
            custList = custList.OrderBy(s => s.FirstName);
            custList = custList.Skip(pageIndex * pagesize).Take(pagesize);
        }
        var jsonData = new
        {
            total = totalPages,
            page,
            customers = totalCustomers,
            rows = custList
        };
        return Json(jsonData, JsonRequestBehavior.AllowGet);
    }

1 个答案:

答案 0 :(得分:0)

解决了我的问题。 Dint知道我会很快得到解决方案。我从控制器中删除了所有现有代码,并添加了:

 public JsonResult GetData()
    {
        var customers = db.Customers.Select(m => new { ID = m.ID, Company = m.Company, FirstName = m.FirstName, Email = m.EMail, Status = m.Status }).ToList();
        return Json(customers, JsonRequestBehavior.AllowGet);
    }

这就是它所需要的,只需两行代码,其余功能,即分页,排序,过滤已由jqwidgets提供:)希望这可以帮助那些面临与我类似问题的人。
脚本如下:

 var source =
        {
            //localdata: GetData(),
            url: '/Client/GetData',
            datatype: "json",
            mtype: 'POST',
            datafields: [
                { name: 'ID', type: 'int' },
                { name: 'Company' },
                { name: 'FirstName' },
                { name: 'EMail' },
                { name: 'Status' }
            ]

        };

        var dataAdapter = new $.jqx.dataAdapter(source);
        // initialize jqxGrid
        $("#jqxgrid").jqxGrid(
        {
            source: dataAdapter,
            sortable: true,
            filterable: true,
            pageable: true,
            columns: [
                    { text: 'Client Id', datafield: 'ID', width: 200 },
                    { text: 'Company', datafield: 'Company', width: 200 },
                    { text: 'Username', datafield: 'FirstName', width: 180 },
                    { text: 'Email', datafield: 'EMail', width: 100 },
                    { text: 'Status', datafield: 'Status', width: 140 }
            ]
        });
    });