将数据从一个页面(在jQuery对话框内)传递到另一个页面

时间:2013-04-25 06:31:03

标签: jquery asp.net

如何将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 Codebehind

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

2 个答案:

答案 0 :(得分:0)

在父窗口中,您需要创建一个事件监听器(请注意,这是一个绝对的跨浏览器解决方案,这里是支持list

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

如果您需要完全跨浏览器解决方案的描述,请随时在评论中提问,一般方法是扔“hashbangs”

答案 1 :(得分:0)

上面发布的代码的场景是这样的,我有一个查找按钮,当用户点击该按钮时,它将加载搜索器对话框(一个jquery对话框)。在此对话框中,用户可以搜索actor列表,在其中加载aspx页面(ActorsList.aspx)。用户将在列表中选择一个actor(即在查找对话框中),它将显示在Actor Id(txtActorId)上。这就是为什么我有一个名为SelectGrid的函数将数据从查找对话框发送到Page1.aspx。我找到了一个页面http://www.ezzylearning.com/tutorial.aspx?tid=6942119,它在那里做同样的事情,但是,在我的例子中,我从一个单独的页面加载jquery对话框上的数据。