0

我有包含图像的“操作”列。

add = "<input type='image' src='/add_24.png' onclick='onAdd('"+row_id+"','"+subgridTableId+"')';/>";

$("#"+subgridTableId).setRowData(ids[i], { act: add });

如何在onClick函数中重定向当前页面?

我已经尝试了所有已知的方法。但是当前页面只是重新加载本身。

有我的 onAdd 函数

function onAdd(id, pid) {

    window.open("www.msn.com");//1

    document.location.href = "sps/sites/main/export/_layouts/AddContractProperty.aspx";//2

    var form = $('<form>');//3
    form.attr('action', 'sps/sites/main/export/_layouts/AddContractProperty.aspx');
    form.attr('method', 'POST');

    // if(newWindow){ form.attr('target', '_blank'); }
    var input = $('<input type="hidden">');
    input.attr({ 'id': 'CID', 'value': cid});
    input.attr({ 'id': 'PID', 'value': pid});
    form.append(input);
    form.appendTo(document.body);
    form.submit();


}

我究竟做错了什么?

4

1 回答 1

0

首先,您使用setRowData网格来构造数据。相反,使用自定义格式化程序会更有效。如果您gridview: true另外使用它,您不仅可以简化代码,还可以提高它的性能(详见答案)。

要将页面重定向到新位置,您只需分配location.href新页面的完整 URL。不需要window.open。您可以在 URL 后面附加其他参数。如果您需要使用 HTTP GET 访问新页面,该方法非常有效。如果您需要使用带有 POST 的表单提交,您可以<form>使用现有的隐藏表单动态构建。无论如何,使用上述所有方法都是错误的。

另外,我建议您不要使用onclick属性来启动全局函数onAdd。取而代之的是,您可以使用beforeSelectRoworonCellSelect回调,因为事件冒泡将被调用。查看代码示例的答案

于 2013-02-15T11:46:09.307 回答