今天再写项目的时候, 有一个手动添加行的功能,使用的是jqgrid的addRowData方法添加数据。可是在咱们切换标签页的时候,再次添加行,调用这个方法的时候,报错了。错误信息以下ajax
而后通过本身的反复测试发现是这样的,当咱们切换到第二个标签页的时候,页面上是没有数据的,调用addRowData的方法报错。可是咱们切换回第一个标签页的时候,页面是有原来的测试假数据的,调用addRowData是没有报错了。因此可能就是数据的问题。咱们添加数据使用的是本地 请求ajax,而后使用datatype:local的方法赋值的。也就是下面的代码数组
1 $("#table_list_1").jqGrid("clearGridData"); 2 $("#table_list_1").jqGrid('setGridParam', { 3 data:all_data, 4 datatype: "local", 5 }).trigger("reloadGrid");
代码当中,当咱们是没有数据的时候,咱们直接给all_data赋值一个空数组。因此解决办法也就很简单了。咱们首先判断all_data是否是有数据,若是没有数据的话,只调用第一行的clearGridData方法。具体代码请看:编辑器
1 if(all_data.length){ 2 $("#table_list_1").jqGrid("clearGridData"); 3 $("#table_list_1").jqGrid('setGridParam', { 4 data:all_data, 5 datatype: "local", 6 }).trigger("reloadGrid"); 7 }else{ 8 $("#table_list_1").jqGrid("clearGridData"); 9 }
而后咱们调用addRowData方法,添加数据,就不会出现上面的报错了。测试
总结:其实此次的错误是和上一篇百度富文本编辑器报错的文章同样,就是由于当咱们再次使用实例化的时候,没有清空或者说销毁原来的实例,致使的报错。这样的错误,应该避免。spa