我有一個LinkButton必須回發執行一些邏輯。ASP.NET WebForms +回發然後打開彈出
完成後,我不想將頁面加載回瀏覽器,而是想讓它保持獨立,並彈出一個新窗口。
到目前爲止,我所擁有的最好想法是將LinkButton放入UpdatePanel中,並在重新加載時讓它呈現一些JavaScript,但我認爲這完全是件怪事。另外,如果我記得正確的話,更新面板中的JavaScript將不會運行。
還有其他想法嗎?
我有一個LinkButton必須回發執行一些邏輯。ASP.NET WebForms +回發然後打開彈出
完成後,我不想將頁面加載回瀏覽器,而是想讓它保持獨立,並彈出一個新窗口。
到目前爲止,我所擁有的最好想法是將LinkButton放入UpdatePanel中,並在重新加載時讓它呈現一些JavaScript,但我認爲這完全是件怪事。另外,如果我記得正確的話,更新面板中的JavaScript將不會運行。
還有其他想法嗎?
使用LinkButton.PostBackUrl設置不同的頁面張貼到,有的客戶端腳本來獲得一個新的窗口(和恢復,以便將來回傳正常工作的老目標)。第二頁可以使用PreviousPage從原始頁面訪問任何需要的狀態。
<script runat="server">
void lnk_Click(object sender, EventArgs e) {
// Do work
}
</script>
<script type="text/javascript">
var oldTarget, oldAction;
function newWindowClick(target) {
var form = document.forms[0];
oldTarget = form.target;
oldAction = form.action;
form.target = target;
window.setTimeout(
"document.forms[0].target=oldTarget;"
+ "document.forms[0].action=oldAction;",
200
);
}
</script>
<asp:LinkButton runat="server" PostBackUrl="Details.aspx" Text="Click Me"
OnClick="lnk_Click"
OnClientClick="newWindowClick('details');" />
你可以嘗試的一件事是讓你的LinkButton OnClick事件完成它的處理,然後用彈出代碼註冊一個Page.ClientScript.RegisterStartupScript,這會在頁面加載後將一些JavaScript放入標籤中。這應該在處理完成後啓動新窗口。
編輯:讀你的評論,我相信你仍然可以使用這種方法,將你的結果存儲在會話變量中,然後讓彈出頁面從那裏拉出結果。
下面是代碼:
protected void Button1_Click(object sender, EventArgs e)
{
// Do some server side work
string script = "window.open('http://www.yahoo.com','Yahoo')";
if (!ClientScript.IsClientScriptBlockRegistered("NewWindow"))
{
ClientScript.RegisterClientScriptBlock(this.GetType(),"NewWindow",script, true);
}
}
你想將結果加載到彈出窗口中,還是不同的東西? – 2008-11-21 19:57:13
結果進入彈出窗口。我不想全面刷新主頁面,因爲這會觸發一堆驗證器並快速變得醜陋。 – FlySwat 2008-11-21 20:14:53