2012-04-07 21 views
0

jqGridツールバーとインライン削除ボタンを使用して行を削除します。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

関連する問題