ASP.NET 仿MSN Messenger Alert的弹出窗口控件

CodeProject上做仿MSN Messenger Alert的弹出窗口控件的不是一个两个,有的是windows app有的是web app.我会一一做个比较,首先介绍这个:ASP.NET Popup Control By Tomas Petricek

[在线demo]
http://www.eeeksoft.net/files/popuptest/

[介绍]
ASP.NET 弹出窗口控件, 是MSN Messenger 提醒(alert)的网页版,通过定义颜色风格可以修改图形的外观.支持拖放操作.一个很重要的特性是支持绝大多数浏览器.在最新版本的Mozilla, IE和Opera下测试通过,在不支持filter的浏览器中UI会有些差异.控件的很多属性可直接使用HTML代码,以实现图片等丰富的表现形式.

ASP.NET 弹出窗口控件PopupWindow, 可用于通知用户重要的信息,比如在web email客户端通知用户新消息/信件. 当用户在系统内交流时需要通知他有人找他聊天. 用此控件的好处是不占网页的空间又能醒目得引起用户的注意. 另外可用于显示广告信息.

锚定弹出控件PopupWinAnchor,可以让弹出窗口控件更快,页面加载更少.比如我们可以用以实现表单填写的即时帮助.当textbox收到输入焦点时即显示动态帮助. 另外,可以用来在每个textbox后加一个button, 当用户点击button时显示弹出窗口.(译者加:即可把该控件与其它某控件关联起来,指定在某控件发生某客户端事件时触发弹出窗口控件)


[效果]
控件有两个事件: 点击弹出窗口上链接时的事件LinkClicked, 点击右上角关闭按钮时的PopupClosed. 根据ActionType属性(如下)的不同,有三种处理事件的方式:
(1)MessageWindow (默认) - 控件会打开新的浏览器窗口,其中显示Text属性的内容.
(2)OpenLink - 控件可以执行JavaScript操作或打开Link属性中的新页面. 生成的<A>标签的target属性也是可以改变的. 生成的代码是这个样子的: <a href="[Link]" target="[LinkTarget]">Link..</a>, 因此得当心Link属性中不要使用引号. LinkTarget非空时才会加上Target属性.
(3)RaiseEvents - 控件触发服务器端的 LinkClicked 或 PopupClosed 事件

[弹出窗口控件PopupWindow使用]
在页面中使用此控件非常简单. VS.NET中,只需要在工具箱中用"添加删除项"来选中控件的dll文件,然后从工具箱中把该控件拖放页面中.

设计器:
控件有良好的设计时支持,我们可以更改所有属性,Action类别中,我们可以定义当用户点击链接和关闭窗口时控件的行为,Text和Design类别中,我们可以修改控件的外表和显示的消息.在Behavior中,我们可以改变时间间隔(何时显示/隐藏弹出窗口),AutoShow属性指控件是否在页面加载后即显示,DragDrop属性为真时,用户可以在页面中拖放控件的位置. 如果我们把ActionType 设为 MessageWindow,Window类别可以用来改变显示窗口的属性. Layout类别中的属性可以用来控制位置(从窗口左下角或右下角的位移).

代码
下面的代码显示了如何改变一些属性并显示控件.设计器:
与加入一个弹出窗口控件类似,设计时我们可以把锚定控件加入到页面中,从选择一个已经存在的服务器端控件或填入其他元素的ID到LinkedControl属性, 然后选择想绑定的客户端事件HandledEvent. 如果只是想再打开弹出窗口,不需劳神,只要让弹出控件在弹出窗口中可见即可. 如果不想在页面加载时就显示弹出控件, 得把AutoShow置为false,这样只有在发生绑定的特定事件时才会显示.要改变文字锚定弹出控件的文字,需把属性ChangeTexts设为true.

<!--  Popup.aspx  -->
<% @ Register TagPrefix = " cc1 "  Namespace = " EeekSoft.Web "
  Assembly
= " EeekSoft.Web.PopupWin "   %>

< cc1:popupwin id = " popupWin "  runat = " server "  visible = " False "  
  colorstyle
= " Blue "  width = " 230px "  height = " 100px "  dockmode = " BottomLeft "  
  windowscroll
= " False "  windowsize = " 300, 200 " ></ cc1:popupwin >

 

 

//  Anchor.aspx.cs
//  Handle onclick event ..
popupAnchor.HandledEvent = " onclick " ;
//  .. of spanReopen element
popupAnchor.LinkedControl = " spanReopen " ;
//  Show popupWin when event occurs
popupAnchor.PopupToShow = " popupWin " ;

//  Popup win is visible ..
popupWin.Visible = true ;
//  .. and will be displayed when page is loaded
popupWin.AutoShow = true ;


[锚定弹出控件PopupWinAnchor使用]

代码:
下面的代码显示了如何锚定弹出控件来打开曾关闭的弹出控件

<!--  Anchor.aspx  -->
<% @ Register TagPrefix = " cc1 "  Namespace = " EeekSoft.Web "
  Assembly
= " EeekSoft.Web.PopupWin "   %>

< cc1:popupwin id = " popupWin "  runat = " server "  visible = " False "  
  colorstyle
= " Blue "  width = " 230px "  height = " 100px "  dockmode = " BottomLeft "  
  windowscroll
= " False "  windowsize = " 300, 200 " ></ cc1:popupwin >
  
< cc1:popupwinanchor id = " popupAnchor "  runat = " server "
  changetexts
= " False " ></ cc1:popupwinanchor >
 
 Click here to reopen popup 
!  

 

//  Anchor.aspx.cs
//  Handle onclick event ..
popupAnchor.HandledEvent = " onclick " ;
//  .. of spanReopen element
popupAnchor.LinkedControl = " spanReopen " ;
//  Show popupWin when event occurs
popupAnchor.PopupToShow = " popupWin " ;

//  Popup win is visible ..
popupWin.Visible = true ;
//  .. and will be displayed when page is loaded
popupWin.AutoShow = true ;


[运行时创建控件]
以前的版本在运行时动态创建此控件有bug,最新版本已经修正了,下面是运行时创建PopupWindow和PopupWinAnchor控件的示例. 当用户点击spanReopen元素后,用JavaScript会创建并显示一个弹出窗口.(这个示例假定页面上有个spanReopen的元素)

//  Create popup window and popup win anchor control (in Page_Load)
PopupWin popupWin = new  PopupWin();
PopupWinAnchor popupAnchor
= new  PopupWinAnchor();

//  Add controls to page
placeHolder.Controls.Add(popupAnchor);   
placeHolder.Controls.Add(popupWin);

//  Set anchor properties
popupAnchor.PopupToShow = popupWin.ClientID;
popupAnchor.LinkedControl
= " spanReopen " ;
popupAnchor.HandledEvent
= " onclick " ;

//  Set popup win properties
popupWin.ActionType = EeekSoft.Web.PopupAction.MessageWindow;
popupWin.Title
= " This is popup " ;
popupWin.Message
= " Message displayed in popup " ;

//  Show popup
popupWin.Visible = true ;
popupWin.AutoShow
= false ;
 
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值