對於前段時間提到過的“AJAX中快顯視窗連續彈出 ”的問題,提供了一種解決方案:將快顯視窗過程在前台js中實現,即可每次都彈出相同內容視窗。
對於這個解決方案,在部署到伺服器時又遇到了問題,伺服器為ie6,也許不相容快顯視窗的js,快顯視窗的內容無法載入。
因此開始尋求第二個解決方案:
從本質原理出發,對於同一內容視窗第二次沒有彈出的原因是,後台調用快顯視窗的代碼完全相同(相同方法,方法參數也相同)
如果每次後台快顯視窗代碼有變化就會引起ajax重新整理,因而每次都會執行後台代碼
從這一解決方案出發:
將後台快顯視窗方法改為:
protected void lnkTab_Click(object sender, EventArgs e)
{
Session["childQX"] = 1;
if (id1 == "0")
{
ScriptManager.RegisterStartupScript(UpdatePanel1, GetType(), "onclick", "showTab2('" + hiddPropId.Value + "')", true);
id1 = "1";
}
else
{
ScriptManager.RegisterStartupScript(UpdatePanel1, GetType(), "onclick", "showTab3('" + hiddPropId.Value + "')", true);
id1 = "0";
}
//AjaxPanel2.
//Refush();
}
通過切換調用不同js來快顯視窗,不同js都是相同的內容,只是賦予了不同的名字。
如此每次後台調用代碼都會重新整理,便可以連續快顯視窗。
此原理簡化一下,用目前時間作為參數的方案,更簡潔:
protected void lnkTab_Click(object sender, EventArgs e)
{
Session["childQX"] = 1;
ScriptManager.RegisterStartupScript(UpdatePanel1, GetType(), "onclick", "showTab2('" + hiddPropId.Value + ",'DateTime.Now')", true);
id1 = "1";
}
每次調用,參數值均不同,因而導致每次都會重新整理,而執行後台代碼。