当我拖动编辑表单时,表单的位置无效。
始终从位置(0,0)
开始到窗口。
它的位置与鼠标光标位置无关。
我该如何解决这个问题?
这些是我的代码。
<table id="jqGrid"></table>
<div id="jqGridPager"></div>
$("#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
答案 0 :(得分:2)
您描述的问题似乎是Guriddo jqGrid JS 4.8.x中的一个错误。我尝试过其他演示,很多人都有同样的问题。因此,我建议您至少在为Guriddo jqGrid JS购买Guriddo forum时向the licence发布错误报告。
我开发了名为free jqGrid的jqGrid的免费分叉(请参阅the readme和the wiki)。您可以直接从CDN进行尝试。如果你在jQuery UI模式对话框中使用网格,那么你应该使用在发布免费jqGrid 4.8之后发布的最新代码。问题已在the answer中报告,我在免费的jqGrid中添加了新选项onTop
。
$.jgrid.jqModal = $.jgrid.jqModal || {};
$.extend(true, $.jgrid.jqModal, {toTop: true});
因此,您可以使用网址http://rawgit.com/free-jqgrid/jqGrid/master/css/ui.jqgrid.css
和http://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.js
或http://rawgit.com/free-jqgrid/jqGrid/master/js/i18n/grid.locale-en.js
等区域设置在免费的jqGrid中是可选的。
我稍后会尝试修改jqGrid使用的对话框代码,以便检测onTop: true
的情况,并在需要时自动设置选项。由于某些原因,我不想将其设为默认值。我分析了jqGrid 4.7的代码并进行了很多更改。所有对话框(如编辑表单)都在jqGrid中保留在内存中的一个问题。如果关闭对话框,它将被隐藏。对话框中使用的事件处理程序,如onClick
处理程序引用网格的DOM元素和其他对象。还有一些其他缺点。所以我这样做,在关闭自由jqGrid中的对话框时,表单将完全失真。默认设置toTop: false
使网格的所有元素包括所有对话框都被创建为在网格上构建的gbox div的子元素。因此,只需删除gbox,就可以从页面中删除由jqGrid创建的所有元素。问题只是覆盖层可能会移动到页面顶部(是<body>
的子节点),就像对话框本身一样,如果有一个网格在另一个模态对话框中。我希望以后能找到完美的解决方案。您只需为编辑表单设置toTop: true
选项,或者像上面的代码一样设置全局。