2013-02-15 65 views
0

我有列'行动'有图像。jqGrid。自定义按钮。如何重定向页面?

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

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

如何的onClick功能重定向当前页面?

我试过所有已知的方法。但目前的网页只是重新加载自己。

有我使用onAdd FUNC

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(); 


} 

我到底做错了什么?

回答

0

首先,您使用setRowData构建网格数据。取而代之的是,使用custom formatter代替效率更高。它使用gridview: true此外,您不仅可以简化代码,还可以提高其性能(有关详细信息,请参阅the answer)。

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

此外,我会建议你不要使用onclick属性来启动全球功能onAdd。取而代之的是,您可以使用beforeSelectRowonCellSelect回调函数,因为event bubbling将被调用。查看代码示例the answer