如何解决使用JavaScript从C#执行doPostBack
| 嗨,我有一个父页面,它打开一个弹出窗口,用户在子弹出页面上进行一些更改,然后单击“保存”按钮。 当用户单击“保存”按钮时,我想要doPostBack到父页面,以便可以在父窗口中看到在弹出窗口中所做的更改。 问题:如何实现以上情况? 我想在aspx.cs文件中编写脚本代码,我尝试过string script = \"\";
script = \"<script>window.opener.__doPostBack(\'UpdatePanel1\',\'\')</script>\";
ScriptManager.RegisterClientScriptBlock(Literal1,typeof(Literal),\"yenile\",script,true);
但这没有做任何事情,没有错误也没有任何错误。
我是JavaScript新手,需要所有步骤的帮助。
解决方法
父页面:
<asp:UpdatePanel runat=\"server\">
<ContentTemplate>
<div>
<asp:Literal runat=\"server\" ID=\"ChildWindowResult\" />
</div>
<hr />
<input type=\"button\" value=\"Open Dialog\" onclick=\"window.open(\'MyDialog.aspx\',\'Dialog\');\" />
<asp:Button ID=\"HiddenButtonForChildPostback\" runat=\"server\"
OnClick=\"OnChildPostbackOccured\" style=\"display: none;\" />
<asp:HiddenField runat=\"server\" ID=\"PopupWindowResult\"/>
</ContentTemplate>
</asp:UpdatePanel>
MyDialog页面:
<script type=\"text/javascript\" src=\"http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.1.min.js\"></script>
<script type=\"text/javascript\">
function postData() {
var resultField = $(\"input[type=\'hidden\'][id$=\'PopupWindowResult\']\",window.opener.document);
var parentPosDataButton = $(\"[id$=\'HiddenButtonForChildPostback\']\",window.opener.document);
resultField.val($(\"#<%= SomeValueHiddenField.ClientID %>\").val());
parentPosDataButton.click();
}
</script>
<asp:TextBox runat=\"server\" ID=\"SomeValueHiddenField\" />
<asp:Button runat=\"server\" OnClick=\"PostData\" Text=\"Click Me\" />
protected void PostData(object sender,EventArgs e)
{
SomeValueHiddenField.Value = DateTime.Now.ToString();
ClientScript.RegisterStartupScript(this.GetType(),\"PostData\",\"postData();\",true);
}
但是我相信最好在这里使用一些弹出控件,例如AjaxControlToolkit库中的PopUpExtender或jQuery-UI中的对话框。
, 您可能需要使用ClientID
:
string script = \"\";
script = \"<script>window.opener.__doPostBack(\'\" + UpdatePanel1.ClientID + \"\',\'\')</script>\";
ScriptManager.RegisterClientScriptBlock(Literal1,typeof(Literal),\"yenile\",script,true);
, 最后一个参数是是否包含脚本标签
所以,如果你这样做
RegisterClientScriptBlock(page,type,\"<script>foo();</script>\",true);
您最终将得到:
\"<script><script>foo();</script></script>\"
因此,将您的最后一个参数更改为false,或者最好将字符串中的标签删除
, 查看以下建议的解决方案:
http://livshitz.wordpress.com/2011/06/12/use-popup-to-postbackupdate-its-parentopener-without-losing-viewstate-values-and-close/#more-16
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。