jqGrid - 在对话框,弹出窗口或新页面中显示网格

时间:2013-06-26 19:38:17

标签: jquery jqgrid popup modal-dialog

使用jqGrid 4.5.2& jQuery 1.9.1。查询SQL表以返回数据以显示jqGrid中的结果。我没有对数据进行任何编辑。

jqGrid使用custom formatter显示查询结果。在自定义格式化程序中,根据返回的数据(列隐藏在jqGrid中),在名为Action的列中显示以下三项内容之一:(1)下拉框,(2)提交按钮或( 3)信息性消息。此外,rowattr用于格式化该行中的(字体,颜色,大小,样式)信息(也基于返回的数据)。当进行下拉选择时,该行随后将使用下拉值&更新。约会时间。同样,当单击提交按钮时,它还会使用日期/时间更新表。

以上每60秒在setInterval上运行一次。该网格按预期运行。

除了上面的网格如何工作之外,我还需要有条件地构建&启动另一个网格。我将使用与上面使用的相同的网格设置,并且jqGrid将显示在对话框,弹出窗口或新页面中。我会查询另一个表,但返回与我目前相同的字段。此网格还会使用custom formatterrowattr和其他代码(停止并重新启动间隔,捕获下拉框更改和提交按钮点击),就像在工作{{1}中所做的那样}。主要区别在于我首先要进行AJAX调用以获取行数,但是如果有任何数据,则只在对话框/弹出/新页面中创建网格。下拉列表&此网格的提交按钮功能与其他网格的提交按钮功能相同(具有日期/时间和/或下拉选择的更新)。

我一直在寻找在目前上面有正常网格的页面上的DIV内构建对话框/弹出网格。

jqGrid

现有的,正常运行的网格位于上面显示的DIV正上方的HTML正文中:

<div id="popDailog">
  <table id="popGrid" border="0" cellpadding="0" cellspacing="0" style="width:100%">
  </table>
  <div id="popPager"></div>
</div>

我的问题:

可以在模态对话框中构建jqGrid吗?如果没有,你如何在弹出窗口或新页面中打开它?大多数问题&amp;答案我看到处理编辑数据,但我没有这样做。

是否可以有条件地构建jqGrid(是否有控制它的选项)?我希望尽可能避免两次旅行。

我将不胜感激任何有关if&amp ;;的指导或意见。如何最好地做到这一点。

谢谢!

1 个答案:

答案 0 :(得分:1)

Jquery代码没有在模式对话框中运行,因此调用者可以在打开的情况下运行:

function initGrid() {
    jQuery("#popGrid").jqGrid({
    url:'...',
    colNames:[...],
    colModel:[...],
    rowNum:20,
    pager: '#popPager',
    ...
}

var dialog = $('#popDailog');
dialog.dialog({
    bgiframe: true,
    modal: true,
    width: 700,
    buttons: {...},
    (...)
    open: function(event, ui) { initGrid(); }
});