我有弹出按钮的aspx脚本:
<asp:Button ID="btnNewEntry" Text="Post Code Search" OnClick="btnNewEntry_Click" runat="Server" target="_blank"/>
后面:
protected void btnNewEntry_Click(object sender, EventArgs e)
{
ClientScript.RegisterStartupScript(this.Page.GetType(), "", "window.open('../search/postcode_search/Default.aspx?code="+ p +"','Post Code Search','width=800,height=300,left=100,top=100,resizable=yes'); popup_handle.focus();", true);
}
但是,当单击该按钮时,将打开弹出窗口但刷新父页面。为什么会这样?任何解决方法?
答案 0 :(得分:1)
当向服务器发出请求时页面被刷新,并且像Button这样的服务器控件默认具有属性AutoPostback = true,这意味着无论何时单击它们都将进行服务器之旅。为插入按钮设置AutoPostback = false,这将为您提供帮助。
or
Add OnClientClick="return false;" ,
<asp:button ID="btninsert" runat="server" text="Button" OnClientClick="return false;" />
答案 1 :(得分:1)
或许对代码实际发生的事情进行一些解释会有所帮助。我们已经讨论了自动回发,因此您知道单击该按钮会将事件发送回服务器。页面再次初始化并重新加载视图状态和所有发布的数据。之后,处理按钮单击事件。
此时,您的代码将window.open脚本写入页面。请记住,这不是具体的。这只是在页面上添加一些并执行的脚本。然后更新视图状态,并将页面发送回客户端。如果用户重新加载页面,那么该脚本将再次执行。
您最好的选择是将其转换为客户端按钮。在加载弹出窗口之前,找一种从服务器获取必要数据的方法。最简单的方法是进行AJAX调用,并在终点打开弹出窗口。
答案 2 :(得分:0)
试试这个。更新一个。
<asp:Button ID="btnNewEntry" Text="Post Code Search" OnClick="btnNewEntry_Click" runat="Server" target="_blank"
OnClientClick="javascript:window.open('../search/postcode_search/Default.aspx?code=+ p','Post Code Search','width=800,height=300,left=100,top=100,resizable=yes').focus();return false;"/>
问题是由于“+ p +”。
答案 3 :(得分:0)
据我所知,我决定去客户端。这是我的剧本:
<button onclick="OpenPopup()" type="button">Post Code Search</button>
和它上面的javascript代码:
<script>
function OpenPopup() {
var getQueryString = function ( field, url ) {
var href = url ? url : window.location.href;
var reg = new RegExp( '[?&]' + field + '=([^&#]*)', 'i' );
var string = reg.exec(href);
return string ? string[1] : null;
};
var str = getQueryString('code');
if (str != null) {
p = str.replace(/%20/g, ' ');
}
else {
p = "";
}
var url = "../search/postcode_search/Default.aspx?code=" + p;
window.open(url, "Post Code Search", "toolbar=no, location=no,status=yes,menubar=no,scrollbars=yes,resizable=no, width=750,height=400,left=430,top=100");
return false;
}
</script>
所以基本上它做了什么,它从父窗口url抓取参数并添加到弹出窗口url。我的父窗口网址:
/Customer.aspx?code=V6E%20111&firstname=MyName
我希望它对其他人也有帮助。谢谢你的帮助。