2011-03-28 126 views
1

我正在实施基于在线示例的jqgrid。数据快到了,但排序/页不工作我缩小它的问题是:解析,因为特殊字符的错误(在我的情况“(”)在json.responsetext所以我想包括我jquerySpecialCharHandler.js页,但没有帮助我就会在这里包括我在我的网页,我的控制器操作/功能jqgrid排序和分页问题

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); 
} 

确切的错误信息是:

A first chance exception of type 'System.Linq.Dynamic.ParseException' occurred in Dynamic.DLL Microsoft JScript compilation error: Expected ')'

和突破是突出一个jquery.jqgrid.js命令,它是这样的:

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

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

+0

您使用哪种数据库模型:LINQ to SQL或实体框架?如果你使用Entity Framework,你不需要使用'System.Linq.Dynamic'。 – Oleg 2011-03-28 16:15:27

+0

我使用的LINQ to SQL – Sue 2011-03-28 17:03:33

回答

0

确定我发现在JSON的context.alerts应该提醒的问题,警示是一组受着排序和分页的数据,我认为把答案,所以如果别人面临着同样的问题可能对他们有帮助。

0

鉴于System.Linq.Dynamic.ParseException它看起来像我的错误是在您的C#代码枚举alerts。尝试观看这些结果 - 尤其是在调试期间.ToArray()的结果。我怀疑这是一个JavaScript问题。

+0

感谢您的回复,我在我的一列(消息)一些括号打开和关闭,研究后,我发现,这些都是特殊字符,应在文本与\\相结合,被认为是文本的一部分,你必须在json.result特殊字符返回的数据网格确定,如果是的话,你可以在这里分享你的代码的一部分,再次感谢 – Sue 2011-03-28 16:59:25

+0

@Sue,我不认为这会导致'任何相遇System.Linq.Dynamic.ParseException'。您对'System.Linq.Dynamic'的调用似乎并未使用该列。 – 2011-03-28 17:02:58

+0

我是新来的,所以原谅我,如果这听起来很简单!我虽然消息列被添加到单元格中,我选择了我所有的列 – Sue 2011-03-28 17:09:37