0

jQueryダイアログで選択した要素の値をその親ページに渡すにはどうすればよいですか?

Page1.aspx

    $(document).ready(function() {
        $("#btnLookUp").click(function() {
            $("#searchActor").dialog({
                autoOpen: "false",
                resizable: "false",
                height: "250",
                width: "320"
            });
        });
    });

    $(document).ready(function() {
        $("#btnSearch").click(function() {
            $("#actorsList").load("LookUp/ActorsList.aspx", { lname: $("#txtSearchCriteria").val() });
        });
        return false;
    });

    function SelectGrid(objValue, itemValue , popUpDialog) {
        $(objValue).val(itemValue);
        $(popUpDialog).dialog("close");                       
    }

ActorsList.aspx コードビハインド

private void LoadActors(string param)
    {
        DataTable dt = new DataTable();
        //Execute stored proc

        Response.Write("<table>");
        foreach (DataRow dr in dt.Rows)
        {
            Response.Write("<tr>");
            Response.Write("<td>" + "<label onclick='SelectGrid(#txtActorId,0,#searchActor'>Select</label>" + "</td>");
            Response.Write("<td>" + dr[2].ToString() + "</td>");
            Response.Write("<td>" + dr[3].ToString() + "</td>");
            Response.Write("<td>" + dr[4].ToString() + "</td>");
            Response.Write("</tr>");
        }
        Response.Write("</table>");
    }

`

また、この行で私を助けてください。値を割り当てる方法に問題があるため、0 として配置しました。 Response.Write("<td>" + "<label onclick='SelectGrid(#txtActorId,0,#searchActor'>Select</label>" + "</td>");

4

2 に答える 2

0

上記のコードのシナリオは次のようなものです。ルックアップ ボタンがあり、ユーザーがそのボタンをクリックすると、searchactor ダイアログ (jquery ダイアログ) が読み込まれます。このダイアログで、ユーザーは aspx ページ (ActorsList.aspx) をロードするアクターのリストを検索できます。ユーザーはリスト (検索ダイアログ内) でアクターを選択し、アクター ID (txtActorId) に表示されます。そのため、検索ダイアログから Page1.aspx にデータを送信する SelectGrid という名前の関数を用意しています。http://www.ezzylearning.com/tutorial.aspx?tid=6942119で同じことを行うページを見つけましたが、私の場合は、別のページから jquery ダイアログにデータをロードします。

于 2013-04-25T08:54:42.660 に答える
0

親ウィンドウで、イベント リスナーを作成する必要があります (これは現在、完全にクロス ブラウザー ソリューションであることに注意してください。サポートリストはこちらです) 。

function listener(event) {
  if( event.origin != 'http://your-domain.com') { //means data comes from another domain
    return;
  }
  document.getElementById("msg").innerHTML = "Recieved: " + event.data;
}

if (window.addEventListener){
  window.addEventListener("message", listener, false);
} else {
  window.attachEvent("onmessage", listener);
}

データを送信しないフレーム形式で:

var win = window.parent;
win.postMessage("Hello", "http://your-domain.com");

完全なクロスブラウザ ソリューションの説明が必要な場合は、コメントでお気軽にお問い合わせください。一般的なアプローチは「ハッシュバン」です。

于 2013-04-25T07:53:35.773 に答える