【问题标题】:How do I copy/clone a row in jqgrid?如何在 jqgrid 中复制/克隆一行?
【发布时间】:2021-09-13 06:57:27
【问题描述】:

我正在尝试在 jqgrid 中创建一个自定义按钮,该按钮允许我克隆选定的行/记录。我目前已使此警报正常工作,并且可以使用以下代码显示所选行的记录 ID:

$buttonoptions = array("#pager",
    array("caption"=>"Clone", "title"=>"Clone selected Record", "onClickButton"=>"js: function(){
        var selr = jQuery('#grid').jqGrid('getGridParam','selrow');
        if(selr) alert(selr);
        else alert('Please select the row you want to Clone first!');
        }"
    )
);
$grid->callGridMethod("#grid", "navButtonAdd", $buttonoptions);

我正在考虑使用 'getRowData' 和 'addRowData' 通过以下代码实现此目的:

var rowData = jQuery('#grid').jqGrid('getRowData',selr);
jQuery('#grid').jqGrid('addRowData',0,rowData,'last');

这样使用

$buttonoptions = array("#pager",
    array("caption"=>"Clone", "title"=>"Clone selected Record", "onClickButton"=>"js: function(){
        var selr = jQuery('#grid').jqGrid('getGridParam','selrow');
        if(selr)
        var rowData = jQuery('#grid').jqGrid('getRowData',selr);
        jQuery('#grid').jqGrid('addRowData',0,rowData,'last');
        else alert('Please select the row you want to Clone first!');
        }"
    )
);
$grid->callGridMethod("#grid", "navButtonAdd", $buttonoptions);

但这不起作用。

我希望能得到一些帮助来解决这个问题,因为我已经尝试了一段时间但没有任何成功,我找不到任何代码示例来解决这个问题。

谢谢

【问题讨论】:

  • 您能否更详细地解释什么不起作用?如果你提示按钮会发生什么?使用的是哪个版本的 Guriddo Suito PHP?
  • 网格根本没有出现。该版本似乎是4.3.2。是否值得更新版本?如果我更新它,我是否需要在我编写的大多数其他工作模块中调整我的代码?谢谢托尼。
  • 如果网格没有出现,那么代码中可能存在错误,尝试隔离问题 - 例如使用 navButtonAdd 删除代码并查看网格是否出现。
  • 这行得通.... if(selr) var rowData = jQuery('#grid').jqGrid('getRowData',selr); // 变量 lastid = 21; else alert('请先选择要克隆的行!');
  • 这不是.... if(selr) var rowData = jQuery('#grid').jqGrid('getRowData',selr);变量 lastid = 21; else alert('请先选择要克隆的行!');

标签: php jqgrid


【解决方案1】:

你在 if else 子句中有一个错误 - 你错过了 { } 括号。应该是

$buttonoptions = array("#pager",
    array("caption"=>"Clone", "title"=>"Clone selected Record", "onClickButton"=>"js: function(){
        var selr = jQuery('#grid').jqGrid('getGridParam','selrow');
        if(selr) { 
            var rowData = jQuery('#grid').jqGrid('getRowData',selr);
            jQuery('#grid').jqGrid('addRowData',0,rowData,'last');
        } else {
            alert('Please select the row you want to Clone first!');
        }
      }"
    )
);
$grid->callGridMethod("#grid", "navButtonAdd", $buttonoptions);

【讨论】:

  • 谢谢托尼,这解决了我的问题。然而,我现在有另一个问题。这会克隆 Grid 中的一行,但不会在数据库中保存等效记录。我如何实现这一目标?即使我在网格中编辑记录,手动调整 MySQL 表记录 id 并单击更新,实际上也没有将记录添加到数据库中。我怎样才能做到这一点?
  • 托尼,谢谢你的帮助。我找到了一种使用 $grid->setAfterCrudAction('edit', 命令来完成这项工作的方法!再次感谢您的所有帮助。
猜你喜欢
  • 1970-01-01
  • 2018-07-30
  • 2019-01-14
  • 1970-01-01
  • 2015-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-07
相关资源
最近更新 更多