我們知道有些報表因為運算的速度實在的太慢,所以我們會讓一個頁面先計算,緩衝在一個地方,然後讓客戶去讀緩衝因為速度實在是太慢了,就希望能在計算的中體現現在正在運算哪個模組,我第一才想到的是通過一個頁面一個模組,然後一個一個的跳轉過去,這樣 在介面上就可以看到現在執行的情況,可能這個能達到要求,現在我把他稍微的改造,用一個頁面完成,這樣程式也好控制點
一、先在web.config中設定配置 <httpHandlers>
<add verb="POST,GET" path="report/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
</httpHandlers>
注意別我忘記在Global.asax中添加
protected void Application_Start(Object sender, EventArgs e)
{
Ajax.Utility.HandlerPath = "report";
}
二、就是做程式了,其實和原來的程式一點也不用改,只要添加就行了,和有個開發經理說的一樣,增加有的情況下不是改,是擴充,加什麼呢?private void Page_Load(object sender, System.EventArgs e)
{
Ajax.Utility.RegisterTypeForAjax(typeof(report.WebForm1));
}
先註冊類 [Ajax.AjaxMethod]
public string aaaaa()
{
DataSet result = new DataSet();
SqlDataAdapter da = new SqlDataAdapter();
SqlCommand cmd = this.BuildQuerycommand("xxxxxxxx", "1");
cmd.CommandTimeout = 1000;
da.SelectCommand = cmd;
da.Fill(result);
return "aaaaa";
}
[Ajax.AjaxMethod]
public string bbbbb()
{
DataSet result = new DataSet();
SqlDataAdapter da = new SqlDataAdapter();
SqlCommand cmd = this.BuildQuerycommand("xxxxxxxx", "1");
然後把以前寫的方法統統考過來,再在頭上寫[Ajax.AjaxMethod]這樣就行了,後台就ok了,主要還要看前台, <script language="javascript">
function callback_testa(res)
{
window.document.Form1.all("ss").value+=res.value;
WebForm1.bbbbb(callback_testb);
}
function callback_testb(res)
{
window.document.Form1.all("ss").value+=res.value;
WebForm1.ccccc(callback_testc);
}
function callback_testc(res)
{
window.document.Form1.all("ss").value+=res.value;
WebForm1.ddddd(callback_testd);
}
function callback_testd(res)
{
window.document.Form1.all("ss").value+=res.value;
}
function test1()
{
WebForm1.aaaaa(callback_testa);
}
window.onbeforeunload = function()
{
window.event.returnValue = false;
}
</script>
這個主要是完成前台的顯示,注意調用的方法就是使用你註冊的類名.你的方法名就行了
這樣效果就出來了
沒多大的改,編程的樣子,實現的效果多了大的改變,雖然實質沒改,但在大環境確實有不少的改變啊