如何将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>");
答案 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对话框上的数据。