Jquery plugins jqgrid冻结列问题与chrome浏览器

Jquery plugins jqgrid冻结列问题与chrome浏览器,jquery-plugins,jqgrid,Jquery Plugins,Jqgrid,您好,我看到了chrome(v22)和firefox之间的jqgrid冻结列演示中的对齐差异。有谁能告诉我为什么会发生这种情况,以及解决办法是什么 如果您查看屏幕截图,您将看到“客户”列和“金额”列之间的水平对齐差异 您可以在以下链接的live上看到相同的内容: 打开上面的链接并转到最后一节,即冻结cols组标题。然后在windows XP的chrome(v22)浏览器中选择冻结列演示或冻结列组标题演示 但是firefox(v15)和safari(v5)在WindowsXP中的对齐方式是正确

您好,我看到了chrome(v22)和firefox之间的jqgrid冻结列演示中的对齐差异。有谁能告诉我为什么会发生这种情况,以及解决办法是什么

如果您查看屏幕截图,您将看到“客户”列和“金额”列之间的水平对齐差异

您可以在以下链接的live上看到相同的内容:

打开上面的链接并转到最后一节,即冻结cols组标题。然后在windows XP的chrome(v22)浏览器中选择冻结列演示或冻结列组标题演示


但是firefox(v15)和safari(v5)在WindowsXP中的对齐方式是正确的

如果增加/减少字体大小,在所有浏览器中,对齐方式有时是正确的,有时是错误的。诚然,只有在Chrome浏览器中,默认大小才会出错,而其他所有浏览器(Firefox、Opera、Safari、Internet Explorer)的启动都是正确的,但当您更改大小时,所有这些浏览器都可能会被调整/错误调整。不仅是垂直对齐,其他东西也会变得丑陋——比如冻结柱和其他柱之间的水平空间,甚至它的垂直大小(当你增加或减少太多时变得明显)


检查DOM时,您会看到它实际上呈现了两个表——一个是固定的,用于冻结列,另一个是可滚动的,用于其余列。它试图把它们放在一个单一的一致的东西上,但最后它主要是一个黑客。至于修复,不幸的是我不知道,但由于这是一个比“在Chrome上不起作用”更普遍的问题,我希望插件开发人员最终会修复它。

我不能向您建议问题的真正解决方案,但我决定写下我如何解释这个问题。简单的回答是:在计算冻结div的
top
位置的方法中有一个错误。我们应该改进代码

有两个div:一个用于冻结的标题(具有类
冻结的div ui jqgrid hdiv
),另一个用于冻结的主体(具有类
冻结的bdiv ui jqgrid bdiv
)。如果打开“冻结列组标题(新)”/“冻结列组标题”演示,并检查不同web浏览器中
top
属性的值,您会发现在某些浏览器中
top
的值应增加或减少到1px以获得正确的视图

例如,在Firefox16中,Dive具有
top:24px
顶部:70px一切看起来都正常

在IE9中,一个具有相同的值,但要正确查看网格,必须将值更改为
top:25px
顶部:71px

以同样的方式,一个具有相同的值
top:24px
顶部:70px在Chrome 22中。要解决此问题,可以将值更改为
top:23px
顶部:69px

您可以使用Chrome的开发者工具(IE也是如此)验证更改
top
属性是否可以解决问题:

更改后,演示的外观将至少完美100%,但如果您将缩放更改为200%,您将看到原始值
top:24px
顶部:70px更好


我想真正解决这个问题并不容易。它的方向是在栅格的每一行冻结零件和每一行非冻结零件上设置高度属性。在这里,你会发现朝着这个方向迈出的第一步。缺点是编辑后需要额外的代码来重新计算行的正确高度。

@Oleg如果您对延迟响应和延迟接受回答感到担忧,您可以看看这篇文章吗,我使用了下面的一行,并在gridcomplete之后调用了这一行,它解决了我的问题<代码>jq(“#gview_u“+gridId+”div.freezed-bdiv”).css(jq(“#gview_“+gridId+”div.ui-jqgrid-bdiv”).position())
@usergiantic:谢谢你的信息!我待会再试试这个。您的代码对应于行
$(this.grid.fbDiv).css($(this.grid.bDiv.position())