如何正确拖动jqgrid编辑表单?

当我拖动编辑表单时,表单的位置无效。 始终从位置(0,0)到窗口。 它的位置与鼠标光标位置无关。

我怎样才能解决这个问题?

这些是我的代码。


  $("#jqGrid").jqGrid({ url: url, mtype: "GET", postData: data, datatype: "jsonp", colModel: [ { label: 'd_id', name: 'd_id', width: 15, key: true, hidden: true}, { label: 'driver', name: 'd_name', width: 30, align:"center", editable: true, editoptions: {size: 40} }, { label: 'phone', name: 'd_phone', width: 30, align:"center", editable: true, editoptions: {size: 40} }, { label: '', name: '' } ], viewrecords: true, autowidth: true, height: '100%', rownumbers: true, rownumWidth: 25, rowNum: 20, editurl: g_base_url + 'driver/edit', pager: "#jqGridPager", loadError : function(xhr,st,err) { }, loadComplete: function () { }, onCellSelect: function(rowid, iCol, cellcontent, e) { } }); 

我的jqgrid版本是4.8,jquery版本是jquery-1.11.2,jquery-ui版本是1.11.4。

请访问jqgrid演示并单击编辑按钮(页面栏中的“+”符号)并拖动编辑表单serveral times 。 您可以找到它的位置始终从pos (0,0)

演示链接是http://www.guriddo.net/demo/guriddojs/edit_add_delete/edit_template/index.html

您描述的问题似乎是Guriddo jqGrid JS 4.8.x中的一个错误。 我尝试了其他演示,许多人都有同样的问题。 因此,我建议您至少在购买Guriddo jqGrid JS 许可证时将错误报告发布到Guriddo论坛 。

我开发了名为free jqGrid的jqGrid的免费fork(参见自述文件和wiki )。 您可以直接从CDN试用。 如果你在jQuery UI模式对话框中使用网格,那么你应该使用发布免费jqGrid 4.8 发布的最新代码。 答案中报告了这个问题 ,我在免费的jqGrid中包含了新选项onTop选项。

 $.jgrid.jqModal = $.jgrid.jqModal || {}; $.extend(true, $.jgrid.jqModal, {toTop: true}); 

因此,您可以使用URL http://rawgit.com/free-jqgrid/jqGrid/master/css/ui.jqgrid.csshttp://rawgit.com/free-jqgrid/jqGrid/master/js/jquery.jqgrid.src.js (像http://cdn.jsdelivr.net/free-jqgrid/4.8.0/js/i18n/grid.locale-en.jshttp://rawgit.com/free-jqgrid/jqGrid/master/js/i18n/grid.locale-en.js这样的语言环境http://rawgit.com/free-jqgrid/jqGrid/master/js/i18n/grid.locale-en.js在free jqGrid中是可选的。

我稍后会尝试修改jqGrid使用的对话框代码,以便检测onTop: true的情况,并在需要时自动设置该选项。 由于某些原因,我不想将其设为默认值。 我分析了jqGrid 4.7的代码并进行了很多更改。 像编辑表单这样的所有对话框在jqGrid中保留在内存中的一个问题。 如果关闭对话框,它将被隐藏。 对话框中使用的事件处理程序,如onClick处理程序引用网格的DOM元素和其他对象。 还有一些其他缺点。 所以我这样做,以便在自由jqGrid关闭对话框时,表单将完全失真。 默认设置toTop: false使网格的所有元素包括所有对话框都被创建为在网格上构建的gbox div的子元素。 因此,只需删除gbox,就可以从页面中删除jqGrid创建的所有元素。 问题只是覆盖层可能会移动到页面顶部(是子代),就像对话框本身一样,如果有一个网格在另一个modal dialog中。 我希望以后能找到完美的解决方案。 直到您可以设置toTop: true选项,无论是编辑表单还是全局选项,如上面的代码。