我正在使用jqgrid,并且在特定的流程中,标题和列未对齐。我在stackoverflow上发现了类似的问题,但解决方案对我没用。为了记录,我使用Oleg在this question中提供的代码块,根据列的内容动态设置列的宽度。然后我使用jqGrid的setColWidth函数来设置网格宽度。我正在调试我面临的这个问题,我不得不查看jqgrid.setcolwidth.js,其中有一个名为dragEnd()的函数。当我进一步研究这个函数时,我发现第一个错位发生在以下语句中
!0===d.forceFit?(e=
this.headers[c+d.nv].newWidth||this.headers[c+d.nv].width,this.headers[c+d.nv].width=e,this.headers[c+d.nv].el.style.width=e+"px",this.cols[c+d.nv].style.width=e+"px",0<this.footers.length&&(this.footers[c+d.nv].style.width=e+"px"),d.colModel[c+d.nv].width=e):(d.tblwidth=this.newWidth||d.tblwidth,b("table:first",this.bDiv).css("width",d.tblwidth+"px"),b("table:first",this.hDiv).css("width",d.tblwidth+"px"),this.hDiv.scrollLeft=this.bDiv.scrollLeft,d.footerrow&&(b("table:first",this.sDiv).css("width",
d.tblwidth+"px"),this.sDiv.scrollLeft=this.bDiv.scrollLeft));
此片段存在于jquery.jqgrid.min.js中,并且对齐不会因所有列而失真,而是针对第11列。从这两个函数调用返回到我的js文件之后,该列标题的宽度不同于列的td的宽度(.jqgfirstrow和.jqgrow)
我不知道该怎么做才能找到问题的根本原因而感到茫然。如果你们中的任何人能够阐明为什么它会像这样表现,或者jqgrid如何精确地设置其列和标题的宽度,那将是非常好的。
注意:forceFit的值在那里是假的。
提前致谢。
答案 0 :(得分:3)
我想您使用了一些旧版本的jqGrid 。我建议你升级到free jqGrid的最新版本(版本4.12.1,但我计划在接下来的几天发布4.13.0)。免费的jqGrid是jqGrid的分支,我自2014年底开发。
我在免费的jqGrid中包含了许多错误修复并实现了新功能。方法setColWidth
包含在主代码中。此外,还有许多新功能,例如基于列内容的auto-adjustment列宽,labelClasses
,labelAlign
(请参阅the demo)以及自述文件中描述的许多其他功能每个发布的版本以及the wiki中的某个人。
我建议你使用免费的jqGrid。您可以从CDN加载它,例如通过here描述的使用URL。我希望问题会自动消失。