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を追加できます。新しいページにアクセスするためにHTTPGETを使用する必要がある場合、この方法は完璧に機能します。POSTでフォーム送信を使用する必要がある場合は<form>、既存の非表示フォームを使用するだけで動的に構築できます。いずれにせよ、上記のすべての方法を混ぜて使用するのは間違っています。

さらに、グローバル関数onclickを開始するために属性を使用しないことをお勧めします。その代わりに、イベントバブリングのために呼び出されるまたはコールバックを使用できます。コード例の答えを見てください。onAddbeforeSelectRowonCellSelect

于 2013-02-15T11:46:09.307 に答える