jqGrid不会为一个数据集加载

时间:2014-06-06 03:33:38

标签: jquery asp.net-mvc jqgrid

我们在开发的MVC4门户网站上有许多jqGrids。除了一个之外,它对所有这些都很好。它显示网格,但没有数据,也没有寻呼机。我已经绞尽脑汁待了好几天,我看不出有什么不对劲。它使用与其他所有工作正常的网格相同的jQuery和控制器结构。这就是我所拥有的:

jQuery / HTML:

<table id="OrgUnitTableGrid"></table>
<div id="OrgUnitTableGridPager"></div>

<script>
    $(function () {
        $("#OrgUnitTableGrid").jqGrid({
            url: '@Url.Action("OrgDataGridView2", "Home")',
            dataType: 'json',
            mtype: 'GET',
            colNames: ['Pos ID', 'Position Name', 'Eff Date', 'ANZSCO', 'Function', 'Location', 'Reports To'],
            colModel: [
                { name: 'PositionID', width: "70", sortable: true, align: 'left' },
                { name: 'PositionName', width: "150", sortable: true, align: 'left' },
                { name: 'EffectiveDate', width: "50", sortable: true, align: 'left' },
                { name: 'ANZSCO', width: "170", sortable: true, align: 'left' },
                { name: 'Function', width: "130", sortable: true, align: 'left' },
                { name: 'Location', width: "170", sortable: true, align: 'left' },
                { name: 'ReportsTo', width: "70", sortable: true, align: 'left' },
            ],
            rowNum: 20,
            rowList: [20, 50, 100],
            width: "900",
            height: '530px',
            pager: '#OrgUnitTableGridPager',
            sortname: "Pos ID",
            sortorder: "asc",
            edit: false,
            viewrecords: true,
            jsonReader: {
                repeatitems: "false",
                id: "0",
            }
        });

        jQuery("#OrgUnitTableGrid").jqGrid('navGrid', '#OrgUnitTableGridPager', { edit: false, add: false, del: false });

    });
</script>

这是相应的Controller动作

public ActionResult OrgDataGridView2()
{
    WebPortalEntities db = new WebPortalEntities();

    int page = int.Parse(Request.Params["page"]);
    int rp = int.Parse(Request.Params["rows"]);

    string sortname = Request.Params["sidx"];
    string sortorder = Request.Params["sord"];
    string searchText = Request.Params["searchValue"];

    IEnumerable<OrgDataViewModel> rows = db.OrgDatas.OrderBy(p => p.PositionID).Select(p => new OrgDataViewModel
    {
        PositionID = p.PositionID,
        PositionName = p.PositionName,
        EffectiveDate = p.EffectiveDate,
        ANZSCO = p.ANZSCO,
        Function = p.Function,
        Location = p.Location,
        ReportsTo = p.ReportsTo,
    }).Skip((page - 1) * rp);

    int total = (rows.Count() / rp) + 1;
    rows = rows.Take(rp);

    JsonResult retVal = Json(new { page, total, rows }, JsonRequestBehavior.AllowGet);
    return retVal;
}

当我检查创建的JSon时,它有数据并且看起来很好。我搜索了StackOverflow并在网上搜索了一些似乎没有用的东西。这只是令人困惑,因为我的其他网格都遵循相同的范例。救命啊!

1 个答案:

答案 0 :(得分:1)

我终于找到了它。这是愚蠢的。

而不是:

datatype: 'json',

我有

dataType: 'json',

在客户端的jQuery中。一个字母错了,jqGrid的默认数据类型是XML,这就是它在parsererror事件中抛出loadError的原因。对于年轻(并且年纪稍大)的球员来说,这是一个陷阱。