|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
不过你如果学.net的话,你就不要选os了,这课比较底层的。你可以旁听数据库加上软件构件和中间件。(webservices和面向服务的课也应该听一听)在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))
{
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();">
</span>
</div>
<divclass="modalBody">
Youreceived<strong><spanid="modalBody"></span></strong>Email(s).
</div>
</div>
</ProgressTemplate>
</asp:UpdateProgress>
这里的封闭X按钮,挪用javascript的剧本,等阵再说
然后固然要加scriptmanager控件了,以下
以下为援用的内容:
<asp:ScriptManagerID="ScriptManager1"runat="server">
<Services>
<asp:ServiceReferencePath="~/InboxService.asmx"/>
</Services>
</asp:ScriptManager>
这里挪用了我们方才写的webservice
以后是写script了
以下为援用的内容:
<scripttype="text/javascript">
varnumberOfEmails_original=0;
varapp=Sys.Application;
app.add_init(applicationInitHandler);
functionapplicationInitHandler(sender,args){
InboxService.GetLatestNumberOfEmails(OnCurrentNumberOfEmailsReady);
}
起首,默许确当然是0封邮件了,有变量来寄存以后邮件数目,以后是在ajax中的初始化事务中挪用webserice的办法了,而且回调OnCurrentNumberOfEmailsReady办法,
以下为援用的内容:
functionOnCurrentNumberOfEmailsReady(result,userContext,methodName){
numberOfEmails_original=result;
//StartChecking
StartChecking();
}OnCurrentNumberOfEmailsReady办法将WEBSERVICE挪用的了局(以后形态下有几封信RESULT)前往给变量,然后挪用sartchecking()办法
functionStartChecking(){
InboxService.GetLatestNumberOfEmails(OnLastestNumberOfEmailsReady);
}
startchecking办法,持续回调OnLastestNumberOfEmailsReady办法
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);
}
这个办法,用以后邮件数-本来邮件数,就得出新增了几封邮件了,再将了局赋值给显现地区的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>
可怜的程序员,还是逃不出移植的命运! |
|