MVC中如何将JsonResult返回的数据传递到JQGrid并正常展示?
你的JQGrid配置的jsonReader要求从返回JSON的rows字段读取数据列表,但后端Controller直接返回了数据数组,没有包裹JQGrid要求的结构,导致前端无法识别数据。
解决方案
1. 调整Controller返回结构(推荐)
修改Detail方法的返回数据,新增JQGrid必填的结构字段即可:
[HttpGet] public JsonResult Detail() { IntegrationsProcessor db = new IntegrationsProcessor(new MCNIDbContext()); DBModel.Integrations row = db.GetIntegrationRow(); List<Integrations> details = new List<Integrations> { new Integrations { IntegrationName = row.IntegrationName, CompanyEmail = row.CompanyEmail } }; // 新增符合JQGrid要求的包裹结构 var responseData = new { rows = details, // 对应jsonReader里的root配置 page = 1, // 当前页码 total = 1, // 总页数 records = details.Count // 总记录数 }; return new JsonResult() { Data = responseData, JsonRequestBehavior = JsonRequestBehavior.AllowGet, MaxJsonLength = Int32.MaxValue }; }
2. 可选:调整JQGrid配置适配现有返回值
如果不想修改后端代码,也可以修改jsonReader配置,直接读取根节点的数组:
jsonReader: { root: function (obj) { return obj; }, // 直接将返回的数组作为数据源 page: function () { return 1; }, total: function () { return 1; }, records: function (obj) { return obj.length; }, repeatitems: false }
3. 额外排查点
- 打开浏览器F12控制台,检查
/Integrations/Detail请求的返回值是否正常,无404、500错误 - 确认
~/bundles/integrations打包的资源包含jQuery、JQGrid核心库,无JS报错 - 确认
colModel里的name属性值和后端返回的对象字段名完全一致,大小写敏感
内容的提问来源于stack exchange,提问作者Anirudh Singh Rawat
相关产品推荐
相关产品推荐

