2013-02-15 68 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