jqgrid排序和分页问题

时间:2011-03-28 15:53:02

标签: jqgrid

我正在实现基于在线示例的jqgrid。数据即将出现但排序/页面无法正常工作我缩小了以下问题:解析错误是因为特殊字符(在我的情况下是json.responsetext中的'(')所以我试图将jquerySpecialCharHandler.js包含在我的页面,但没有帮助。我将在这里包括我的页面和我的控制器动作/功能。

jQuery(document).ready(function() {
    jQuery("#list").jqGrid({
        url: '/Home/DynamicGridData/',
        datatype: 'json',
        mtype: 'GET',
        colNames: ['Policy', 'Policy Rule','Alert Status','Alert Code',
                   'Message','Category'],
        colModel: [
            { name: 'Policy', index: 'Policy', sortable: true, sorttype: 'text',
              align: 'left', resizable: true },
            { name: 'Policy Rule', index: 'Policy Rule', sortable: true,
              sorttype: 'text', align: 'left', resizable: true },
            { name: 'Alert Status', index: 'AlertStatus', sortable: true,
              align: 'left', resizable: true },
            { name: 'Alert Code', index: 'AlertCode', sortable: true,
              align: 'left', resizable: true },
            { name: 'Message', index: 'Message', sortable: true,
              align: 'left', resizable: true },
            { name: 'Category', index: 'Category', sortable: true,
              align: 'left', resizable: true}],
        pager: $("#pager"),
        rowNum: 10,
        rowList: [5, 10, 20, 50, 100],
        scroll: true,
        sortname: 'Policy',
        sortorder: 'acs',
        autowidth: true,
        viewrecords: true,
        imgpath: '/scripts/themes/coffee/images',
        caption: 'Nebo System Alerts'
    });
}); 

我的功能是:

public ActionResult DynamicGridData(string sidx, string sord, int page, int rows){
    var context = new AlertsManagementDataContext();
    int pageIndex = Convert.ToInt32(page) - 1;
    int pageSize = rows;
    int totalRecords = context.Alerts.Count();
    int totalPages = (int)Math.Ceiling((float)totalRecords / (float)pageSize);
    IQueryable<Alert> alerts = null;
    try
    {
        alerts =  context.Alerts.
                  OrderBy(sidx + " " + sord).
                  Skip(pageIndex * pageSize).
                  Take(pageSize);
    }catch(ParseException ex){
        Response.Write(ex.Position + ex.Message);
    }
    var jsonData = new {
        total = totalPages,
        page = page,
        records = totalRecords,
        rows = (
            from alert in context.Alerts
            select new {
                id = alert.AlertId,
                cell = new string[] {
                    alert.Policy.Name.ToString(),alert.PolicyRule.ToString(),
                    alert.AlertStatus.Status.ToString(), alert.Code.ToString(),
                    alert.Message.ToString(),alert.Category.Name.ToString()
                }
            }).ToArray()
    };
    return Json(jsonData);
}

我在调试期间收到的确切错误消息是:

  

类型的第一次机会异常   'System.Linq.Dynamic.ParseException'   发生在Dynamic.DLL Microsoft   JScript编译错误:预期   ')'

并且中断突出显示了一个jquery.jqgrid.js命令:

addJSONData(eval("("+JSON.responseText+")"),ts.grid.bDiv)

不用说我已经通过了几个例子,但我的数据中的特殊字符似乎是问题并且没有被处理,我感谢任何帮助/建议。

2 个答案:

答案 0 :(得分:0)

鉴于System.Linq.Dynamic.ParseException,我认为错误在于C#代码中alerts的枚举。尝试观察这些结果 - 特别是调试期间.ToArray()的结果。我怀疑这是一个JavaScript问题。

答案 1 :(得分:0)

好吧我发现问题是json中的context.alerts应该是警报,警报是受排序和分页影响的数据集,我想如果其他人面临同样的问题就给出答案可能对他们有所帮助。