今天再寫專案的時候, 有一個手動添加行的功能,使用的是jqgrid的addRowData方法添加資料,但是在我們切換標簽頁的時候,再次添加行,呼叫這個方法的時候,報錯了,錯誤資訊如下

然后經過自己的反復測驗發現是這樣的,當我們切換到第二個標簽頁的時候,頁面上是沒有資料的,呼叫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方法,添加資料,就不會出現上面的報錯了,
總結:其實這次的錯誤是和上一篇百度富文本編輯器報錯的文章一樣,就是因為當我們再次使用實體化的時候,沒有清慷訓者說銷毀原來的實體,導致的報錯,這樣的錯誤,應該避免,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/175423.html
標籤:JavaScript
