2010-05-21 89 views
1

我有一个jqGrid,它具有添加/编辑对话框的窗体比对话框高度更长,但对话框不会滚动。我试过的风格overflow: auto添加到对话,但没有效果:jqgrid可滚动对话框

$("div.ui-jqdialog-content").css("overflow", "auto"); 

虽然,如果我改变autoscroll,我至少看到一个滚动条,但仍然没有滚动:

$("div.ui-jqdialog-content").css("overflow", "scroll"); 

这至少给我带来了一丝希望,希望我走在正确的轨道上。

似乎有不被从API文档可以向任何方向支持滚动:

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:form_editing

有谁知道如何工作的滚动条添加到由jqGrid的使用jqModal对话窗口?

UPDATE

这是一个总的黑客的工作,但我有一个滚动条出现和功能执行以下操作:

setTimeout(function() {$("#FrmGrid_list").html('<div style="height: 300px; overflow: auto;">' + $("#FrmGrid_list").html() + '</div>');}, 1000); 

我重视这个给afterShowForm事件。但是,这确实不能解决问题,因为它会导致其他领域的其他问题。

+0

如果你不喜欢,为什么jqModal不要在你的例子显示滚动条的原因,刚刚发布的HTML代码,显示的JavaScript文件加载顺序的代码示例 – Oleg 2010-05-21 09:46:53

回答

3

我想我会分享我的解决方案,供他人参考。

form元素具有默认height: auto;样式属性,这会导致overflow: auto;不能按要求运行。为了制作溢流滚动,需要将高度设置为固定数量以约束容器form,因此需要使用overflow

我连着CSS更新到afterShowForm表单编辑的事件,使用下面的代码:

afterShowForm: function(form) { form.css("height", "300px"); } 

你要知道,300像素,是我选择测试的任意数量。这个数字将会调整以适应我的需求。它甚至可以在调整大小时动态调整。谁知道。

此外,使用Firebug,我发现我的表单ID是FrmGrid_list。我的网格ID是列表(例如,<table id="list"></table>jQuery("#list").jqGrid({...});)。如果你的网格被命名为列表以外的其他东西,那么表单id(上面)应该反映出来。

参考链接:

+1

只有很小的改进。 'afterShowForm'可以用一个参数'function(form)'声明,'form'参数将被jqGrid初始化为$(“#FrmGrid_list”)。所以代码可能看起来像'form.css(“height”,“300px”);'。 – Oleg 2010-05-21 16:29:47

+0

不错。这太漂亮了。我会将它添加到上面。 – gurun8 2010-05-21 18:06:34

1

你的问题听起来很奇怪。每个编辑/添加对话框都有一个可滚动的form,里面有名为“FormPost”的名称。这种形式有以下风格:

position: relative; width: 100%; height: auto; overflow: auto; 

我刚刚测试了一个jqGrid与很多控件,可以滚动没有任何问题。

,你有奇怪的行为的原因可能是你要么忘了,包括可选的jqModal.jsjqDnR.js(见开头相同http://www.trirand.com/jqgridwiki/doku.php?id=wiki:form_editing页),或使用了错误的路径文件,所以它们不会被加载。

+0

嘿奥列格感谢为回应。 我将jqModal.js和jqDnR.js库添加到了我的脚本中(它们并未事先提供),但没有任何更改。我认为高度:自动风格是罪魁祸首。我可能是错的,但它似乎调整高度以适应内容。永远不会被调用的高度:auto。不应该固定高度来引起约束并使溢出成为必要吗?如我错了请纠正我。 – gurun8 2010-05-21 14:48:56

+0

宾果!就是这样。

标签有一个高度:自动。当我将其改为固定高度时,滚动条出现并完美运行。 $(“#FrmGrid_list”)。css(“height”,“300px”); 我也会在上面发表。 – gurun8 2010-05-21 14:55:50

0

这个问题很老了,但无论如何,我会添加一个答案。

我不知道这是否可行,但现在只需使用对话框的dataheight属性(添加或编辑)来精确设置内部窗体的高度(以像素为单位)。默认值是'auto',因此它不会溢出。如果需要,设置所需的高度显示滚动条。

参考:http://www.trirand.com/jqgridwiki/doku.php?id=wiki:form_editing