ASP.NET2.0中实现弹窗报警提示

来源:互联网 发布:php method 编辑:程序博客网 时间:2024/05/16 08:02
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
.Lhe777{display:none;}

在web应用中,比如OA中,经常要用到一些提示,比如EMAIL到达了,就做个象MSN那样的提示框,弹出给用户提示,然后再关闭。在ASP.NET2.0的ajax中,这个现在不难做到了,刚好看到老外的一篇文章,讲解到,下面小结

比如有个数据库表,是存放EMAIL的,当数据库表中的EMAIL一有的时候,就提示用户,首先简单写一个WEBSERVICE如下


[ScriptService]
publicclassInboxService:System.Web.Services.WebService
{
   [WebMethod]
   publicintGetLatestNumberOfEmails()
   {
       intnumberOfEmails=0;
       using(SqlConnectionconn=newSqlConnection(WebConfigurationManager.ConnectionStrings[0].ConnectionString))
       {
           using(SqlCommandcmd=newSqlCommand("GetLatestNumberOfEmails",conn))_com
           {
               cmd.CommandType=CommandType.StoredProcedure;
               conn.Open();
               numberOfEmails=(int)cmd.ExecuteScalar();
           }
       }
       returnnumberOfEmails;
   }
}

这里要注意要在客户端通过AJAX调用WEBSERICE,要加上[ScriptService]

2在default.ASPx中,首先加入一个updateprogress控件,如下


<ASP:UpdateProgressDynamicLayout="False"ID="UpdateProgress1"runat="server">
   <ProgressTemplate>
       <divid="modal"class="modal">
           <divclass="modalTop">
               <divclass="modalTitle">MyInbox</div>
               <spanstyle="CURSOR:hand"onclick="javascript:HidePopup();">
                <imgalt="HidePopup"src="App_Themes/Default/images/close_vista.gif"border="0"/>
            </span>
        </div>
           <divclass="modalBody">
               Youreceived<strong><spanid="modalBody"></span></strong>&nbsp;Email(s).
           </div>
       </div>
   </ProgressTemplate>
   </ASP:UpdateProgress>Www__com

这里的关闭X按钮,调用javascript的脚本,等阵再说

然后当然要加scriptmanager控件了,如下


 <ASP:ScriptManagerID="ScriptManager1"runat="server">
           <Services>
               <ASP:ServiceReferencePath="~/InboxService.asmx"/>
           </Services>
       </ASP:ScriptManager>Www__com

这里调用了我们刚才写的webserviceWww@@com

之后是写script了


<scripttype="text/javascript">
           varnumberOfEmails_original=0;
           
           varapp=Sys.Application;
           app.add_init(applicationInitHandler);
           
           functionapplicationInitHandler(sender,args){
               InboxService.GetLatestNumberOfEmails(OnCurrentNumberOfEmailsReady);
     }

首先,默认的当然是0封邮件了,有变量来存放当前邮件数量,之后是在ajax中的初始化事件中调用webserice的方法了,并且回调OnCurrentNumberOfEmailsReady方法,Www__com


    functionOnCurrentNumberOfEmailsReady(result,userContext,methodName){
               numberOfEmails_original=result;
               //StartChecking
               StartChecking();
           }

OnCurrentNumberOfEmailsReady方法将WEBSERVICE调用的结果(当前状态下有多少封信RESULT)返回给变量,然后调用sartchecking()方法

     functionStartChecking(){
         InboxService.GetLatestNumberOfEmails(OnLastestNumberOfEmailsReady);
     }.

startchecking方法,继续回调OnLastestNumberOfEmailsReady方法Www.

           functionOnLastestNumberOfEmailsReady(result,userContext,methodName){
               varnumberOfEmails_new=result;
               if(numberOfEmails_new>numberOfEmails_original){
                   ShowPopup();
                   $get("modalBody").innerHTML=numberOfEmails_new-numberOfEmails_original;
                   
                   //Updatethecounthere


                   numberOfEmails_original=numberOfEmails_new;
               }
               //Startcheckingagain
               window.setTimeout(StartChecking,10000);
           }Www.

中.国

这个方法,用当前邮件数-原来邮件数,就得出新增了多少封邮件了,再将结果赋值给显示区域的modalbody,并且记得把当前邮件数量的,变量更新哦(numberOfEmails_original=numberOfEmails_new;)

然后再用setimeout来设置每隔10000毫秒检查一次了站.长站


           functionShowPopup(){
               $get("UpdateProgress1").style.visibility="visible";
               $get("UpdateProgress1").style.display="block";
           }
           functionHidePopup(){
               $get("UpdateProgress1").style.visibility="hidden";


               $get("UpdateProgress1").style.display="none";
           }
       </script>Www@@com

^com

<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>