2012-04-07 1 views
0

Панель инструментов jqGrid и кнопки удаления inline используются для удаления строк.Как установить фокус на сетку после удаления в jqgrid

Появляется диалоговое окно удаления команды удаления. После того, как удаление подтверждено или отменено, сетка не получит фокуса. Щелчок мышью в сетке требуется, чтобы клавиатурная навигация работала в сетке.

Как установить фокус на сетку после удаления или если удаление было отменено, так что дополнительный щелчок мыши не требуется?

удаления кнопки на панели инструментов:

 $.extend($.jgrid.del, { 
      top: window.innerHeight/2-100, 
      left: window.innerWidth/2-120, 
      closeOnEscape: true, 
      errorTextFormat: function (response) { 
       clearModeless(); 
       return decodeErrorMessage(response.responseText, '', ''); 
       }, 
      reloadAfterSubmit: false, 
      afterShowForm: function($form) { 
       var form = $form.parent()[0]; 

       $("#dData",form).attr("tabindex","1000"); 
       $("#eData",form).attr("tabindex","1001"); 
       setTimeout(function() { 
        $("#dData",form).focus(); 
       },50); 
      } 
      }); 


      $grid.jqGrid("navGrid", "#grid_toppager", { 

      search: true, 
      del: true, 
      add: true, 
      view: true, 
      edit: true 
      }, 

      {  url: '/erp/Grid/Edit?_entity=Klient'}, 

     {  url: '/erp/Grid/Add?_entity=Klient' }, 

     { url: '/erp/Grid/Delete?_entity=Klient', 

      beforeShowForm: function(form) { 
      var selected = $grid.jqGrid('getGridParam','selarrrow'); 
      $("td.delmsg",form).html('Rows '+selected.length +'<br/>' + 
       'Delete?'); 
      } 
     } 
); 

Удалить кнопку в колонке:»

   colModel: [{"name":"_actions","formatter":"actions","viewable":false,"formatoptions":{"editbutton":true,"keys":true,"onSuccess":function (jqXHR) { jqXHRFromOnSuccess=jqXHR;return true;} 
,"afterSave":function (rowId) { 
    var data = $.parseJSON(jqXHRFromOnSuccess.responseText); 
$grid.jqGrid('setRowData', rowId, { Kood: data.PrimaryKeyValues[0] }); 
cancelEditing($grid);afterGridSaveFunc(rowId,jqXHRFromOnSuccess);jqXHRFromOnSuccess=null; 
updateButtonState($grid); 
} 
,"restoreAfterError":false,"onError":errorfunc 
,"extraparam":{"_dokdata":FormData 
},"afterRestore":function() { 
      updateButtonState($grid); 
     } 
,"onEdit":onInlineEdit 
,"delbutton":true,"delOptions":{"url":"Delete","afterComplete":function (response, postdata, formid) { summarefresh($grid); } 
}}}, 

ответ

1

кажется, что я, что вы должны установить фокус на сетке или на какой-то другой элемент внутри afterComplete. Вы используете reloadAfterSubmit: false, поэтому я не вижу проблем, чтобы установить фокус здесь. В настоящее время вы вызываете функцию summarefresh. Вы можете установить фокус сразу после вызова summarefresh.

+0

Я добавил 'afterComplete: function() {alert ('afterComplete'); $ grid [0] .focus();}' для удаления параметров. Если кнопка Esc или кнопка отмены нажата, чтобы удалить вопрос, окно сообщения не появляется, и клавиши не работают. Как настроить фокус на сетку после удаления? – Andrus

+0

Также, если сервер возвращает ошибку из контроллера удаления и нажата отмена, клавиши не будут работать. Также '$ grid [0] .focus()' устанавливает фокус только на сетку. Используется 'multiselect: true'. Как установить фокус на ближайшую удаленную строку или первую строку, чтобы клавиши со стрелками вверх/вниз переместились в текст/предыдущую строку после удаления? – Andrus

Смежные вопросы