0

我正在尝试复制一行,但我正在使用数据库中的数据,并且我正在使用 JSON 返回它。我想知道是否可以复制一行,是否可以限制复制行的次数。例如,我需要复制 id = 6 的行,但我需要对这一行进行 5 个副本。我怎样才能做到这一点?

4

2 回答 2

0

使用 getRowData 从 jqgrid 中获取单行,然后通过 var s = new Array() 创建一个数组,并推送您想要的单行次数。

在 jqgrid 中创建一个新列 .. 使用格式化程序Formatter 在 jQgrid 中放置一个链接在该列写入处理程序中以单击该链接.. 在该处理程序上使用 getrowdata 并获取字段,然后进行 ajax 调用以发送到服务器.. .

于 2013-04-05T13:19:49.917 回答
0

您可以在服务器端而不是在客户端进行主要工作

在 jqgrid 声明中是这样的:

grid.jqGrid({
    ...
    loadComplete: function(data) {
        var ids = grid.jqGrid('getDataIDs');

        for (var i=0;i<ids.length;i++) {
            var id=ids[i];
            var rowData = thisGrid.jqGrid('getRowData', id);

            grid.jqGrid('setCell', id, 'buttons', '<input type="button" class="copy" value="Copy">');
        }

        $('button.copy').click(function (e) {
            var id = $(e.target).parents('tr')[0].id;

            $.ajax({
                url: 'some_url',
                dataType : "json",
                data: {'id': id},
                timeout: 10000,
                type: 'POST',
                success: function (data) {
                    grid.trigger('reloadGrid');
                },
            });
        });
    }
    ....
});

在 php 部分是这样的

$array = array(
    'success'=>false
);

if(isset($_POST['id])) {
    if($db -> num_rows($q = $db->query("SELECT FROM ... WHERE `id` = ".intval($_POST['id'])) == 1) {
        $row = $db -> fetch_assoc($q);

        $db->query("INSERT INTO .....);
        $array['success'] = true;
    }
}

echo json_encode($array);

如果要复制多次,可以在客户端添加一些对话框以输入副本数

于 2013-04-05T15:54:27.583 回答