【问题标题】:How to set focus to grid after delete in jqgrid如何在jqgrid中删除后将焦点设置为网格
【发布时间】:2012-04-07 14:44:28
【问题描述】:

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); }
}}},

【问题讨论】:

    标签: javascript jqgrid


    【解决方案1】:

    在我看来,您应该将焦点设置到网格或afterComplete 内的某个其他元素。您使用reloadAfterSubmit: false,所以我认为在这里设置焦点没有问题。目前您调用summarefresh 函数。调用summarefresh后可以直接设置焦点。

    【讨论】:

    • 我添加了afterComplete: function() { alert('afterComplete');$grid[0].focus();} 来删除选项。如果按 Esc 键或取消按钮删除问题,则不会出现消息框且按键不起作用。删除取消后如何将焦点设置回网格?
    • 另外,如果服务器从删除控制器返回错误并按下取消,键将不起作用。此外$grid[0].focus() 仅将焦点设置为网格。使用multiselect:true。如何将焦点设置到最近的已删除行或第一行,以便删除后向上/向下箭头键移动到文本/上一行?
    猜你喜欢
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多