datagrid調用getEditor爲null?這樣你試過了嗎?

datagrid調用getEditor爲null?這樣你試過了嗎?

前言

  在使用easyui的datagrid時遇到了這麼一個問題,使用getEditor獲取editor的結果爲空,記錄一下解決過程。

問題引入

   var row = $('#tt').datagrid('getSelected');
   var rowIndex = $('#tt').datagrid('getRowIndex',row);
   let ed
   ed = $('#tt').datagrid('getEditor', {index:rowIndex, field:'aa'});
   $(ed.target).combobox('reload', url);

  在上面一段代碼中,最後一行報錯,Cannot read property ‘target’ of null
在這裏插入圖片描述
  無法獲取到target,如果此時在控制檯打印editor就會發現是null,說明並沒有實際取到editor。

問題解決

  在網上搜索datagrid editor 爲null 大概可以找到這個方案

方案一

  在設置值之前開啓行編輯,也就是在最前面加上這一行

$('#tt').datagrid('beginEdit', 0);

  那麼問題解決了沒有呢?並沒有,這種方案在編輯行是適用的,在datagrid的編輯行中前面獲取到的rowIndex確實可以取到對應行,但在新增行中rowIndex=-1,而-1是沒辦法獲取到對應行的此時就需要用另一種方法

方案二

   var row = $('#tt').datagrid('getSelected');
   var rowIndex = $('#tt').datagrid('getRowIndex',row);
   let ed
   if (rowIndex == -1) {
    	ed = $('#tt').datagrid('getEditor', {index:$('#tt').datagrid('getRows').length-1, field:'aa'});
        $(ed.target).combobox('reload', url);
   } else {
       ed = $('#tt').datagrid('getEditor', {index:rowIndex, field:'aa'});
       $(ed.target).combobox('reload', url);
   }

  因爲新增數據時是使用appendRow在行尾新增一行,所以當需要獲取的數據行是新增數據時需要用總行數-1。
  此時就可以成功獲取target了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章