今天再寫項目的時候, 有一個手動添加行的功能,使用的是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