2011-09-07 72 views
1

如果行保存在jqGrid中的内联编辑中,FireFox会在保存操作期间使网格变暗(灰色)。如何灰显jqgrid保存在IE中的内联编辑像Firefox一样

Internet Explorer 9不会更改网格外观。

loadui参数没有被使用,所以它应该有它的默认值(启用)。 如果网格被刷新,它不会像预期的那样在两个浏览器中变成灰色。 仅在保存FireFox期间出现灰色。

如何在保存(如果编辑url被调用时)在Internet Explorer 9中灰化网格吗?

更新

重现步骤:

  1. 打开http://trirand.com/blog/jqgrid/jqgrid.html
  2. 选择

功能(4.0)新

格式化操作

  1. 单击编辑操作按钮

  2. 单击保存操作按钮

观察:

在Firefox中单击保存按钮,使网格暗一会儿 在IE 9点击保存按钮不会改变网格。

+0

我无法重现您的问题。在保存内联编辑行时,在我的测试网站上,灰色叠加层将设置在网格上。 IE9中存在相同的行为。 – Oleg

+0

@Oleg:谢谢。我更新了问题并提供了重复步骤 – Andrus

+0

@Oleg:此演示页面还有另一个问题:快速点击多行中的编辑/保存操作按钮会将多行放入编辑模式。在我的应用程序中,如果使用重置选择的多重选择,则会出现类似的问题。如何解决这个问题? – Andrus

回答

2

我分析了这个问题。究其原因是内联编辑使用​​the line

async : false, //?!? 

(“?!?”的评论是在jqGrid的代码原有的评论)。因此,一般来说,阻止网格的覆盖将显示在保存该行的jQuery.ajax请求的开始处,但是由于async : false,网页浏览器的GUI将被阻止,直到完成,屏蔽。在complete事件句柄中,叠加层将被隐藏,用户看不到任何东西。除Firefox之外的所有网络浏览器都不显示覆盖图。

要修正问题而不更改jqGrid代码,可以使用jqGrid的ajaxRowOptions选项。该选项未记录在the common list of jqGrid options中,但在saveRow文档的末尾。的

ajaxRowOptions: { async: true } 

为jqGrid的选项或为新的默认选项

$.extend($.jgrid.defaults, { 
    ajaxRowOptions: { async: true } 
}); 

将在联编辑的情况下,解决问题的用法。

在“动作”格式化使用的情况下,从the line另一个问题存在

if ($('#'+gid).jqGrid('saveRow',rid, op.onSuccess,op.url, op.extraparam, saverow, op.onError,restorerow)) { 
    $("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid+ ".ui-jqgrid-btable:first").show(); 
    $("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid+ ".ui-jqgrid-btable:first").hide(); 
} 

可以看出,这里的jqGrid使用saveRow如真如异步函数在这里。如果您将使用ajaxRowOptions: { async: true },则必须在您的onSuccess事件处理程序中将div和div.ui-inline-del可见并隐藏div.ui-inline-savediv.ui-inline-cancel

修订:的对不起另一代码 - 用作saveRow方法的参数做相同的工作的saverow功能。所以我认为所有的div都会在你的onSuccess事件处理程序中没有任何附加代码的情况下正确显示/隐藏。

+0

我在注释中提到的内联编辑问题中复制了多行,并在完整的本地测试用例中发布了这个问题:http://stackoverflow.com/questions/7344937/how-to-prevent-multiple-rows-in-edit-mode-in-范围内选择单点击编辑JQ – Andrus