Atlas学习手记(11):使用ModalPopup Extender

ModalPopupAtlasControlToolkit中提供的一个Extender,本文将会用它来实现一个类似模态的确定对话框,并实现灰屏效果。

 

主要内容

1ModalPopup Extender介绍

2.完整示例

 

一.ModalPopup Extender介绍

用过网易邮箱的朋友,都应该对这个界面非常熟悉,有一个确定对话框(其实不是对话框),并且具有灰屏效果:

本文将看看如何使用ModalPopup Extender来实现类似于这样的效果。ModalPopup的示例代码如下,每个ModalPopupExtender都必须添加ModalPopupProperties

<atlastoolkit:ModalPopupExtender ID="ModalPopupExtender1" runat="server">

    
<atlastoolkit:ModalPopupProperties 

        
TargetControlID="DeleteButton" 

        PopupControlID
="ConfirmtionPanel"

        OkControlID
="YesButton" 

        OnOkScript
="onYes()" 

        CancelControlID
="NoButton" 

        OnCancelScript
="onNo()"

        BackgroundCssClass
="modalBackground">

    
</atlastoolkit:ModalPopupProperties>

</atlastoolkit:ModalPopupExtender>

它的属性如下:

属性

说明

TargetControlID

触发ModalPopup的控件ID

PopupControlID

作为ModalPopup显示的控件ID

OkControlID

确定控件ID

OnOkScript

确定后要执行的JS代码

CancelControlID

取消控件ID

OnCancelScript

取消后要执行的JS代码

BackgroundCssClass

当显示ModalPopup时的背景CSS样式

DropShadow

是否为ModalPopup添加drop-shadow效果

二.完整示例

下面我们看这个具体的示例[来自于http://blogs.vertigosoftware.com/],点击一个删除按钮,弹出确定对话框,如果用户选择YES,将在街面上显示Item deleted,否则显示Action canceled。首先我们用一个Panel来作为Popup对话框,在它上面有提示的文本,确定和取消按钮:

<asp:Panel ID="ConfirmtionPanel" runat="server" CssClass="modalPopup" Style="display: none">

    
<div class="modalPopup-text">

        Are you sure you want to delete this item?
<br />

        
<br />

        
<asp:Button ID="YesButton" runat="server" Text="Yes"/>&nbsp;&nbsp;

        
<asp:Button ID="NoButton" runat="server" Text="No" />

    
</div>

</asp:Panel>

这里特别要注意一下的就是为Panel设置Style="display: none",在初始的界面中隐藏,直到点击按钮的时候才会触发它显示。然后用一个Button来做为TargetControl,用来触发ModalPopup,用Label显示文本。

<asp:Button ID="DeleteButton" runat="server" Text="Delete Item" /><br />

<asp:Label ID="Label1" runat="server" Text="" CssClass="feedback"></asp:Label>

下面就是添加ModalPopupExtender了,设置它的相关属性如下:

<atlastoolkit:ModalPopupExtender ID="ModalPopupExtender1" runat="server">

    
<atlastoolkit:ModalPopupProperties 

        
TargetControlID="DeleteButton" 

        PopupControlID
="ConfirmtionPanel"

        OkControlID
="YesButton" 

        OnOkScript
="onYes()" 

        CancelControlID
="NoButton" 

        OnCancelScript
="onNo()"

        BackgroundCssClass
="modalBackground">

    
</atlastoolkit:ModalPopupProperties>

</atlastoolkit:ModalPopupExtender>

定义CSS样式,为了实现灰屏效果,注意modalBackground样式:

<style type="text/css">

    body 
{
        font
:normal 10pt/13pt Arial, Verdana, Helvetica, sans-serif;

        color
:#666;

        margin
:20px;
     
}


    .modalBackground 
{

        background-color
:#000;

        filter
:alpha(opacity=80);

        opacity
:0.8;
     
}


    .modalPopup img 
{

        border
:solid 5px #fff;
     
}


    .modalPopup-text 
{

        display
:block;

        color
:#000;

        background-color
:#E6EEF7;

        text-align
:center;

        border
:solid 1px #73A2D6;

        padding
:10px;
     
}


    .modalPopup-text input 
{

        width
:75px;
     
}


    .feedback
    
{
        color
: #00cc00;

        font-weight
: 700;
     
}


</style>

最后编写一点简单的JS脚本,作为OnOkScriptOnCancelScript

<script type="text/javascript">

    
function onYes() {

       document.getElementById('Label1').innerText 
= 'Item deleted';

    }


    
function onNo() {

        document.getElementById('Label1').innerText 
= 'Action canceled';

    }


</script>

至此,大功告成。编译运行:

点击按钮后就可以看到效果了:

完整示例下载:http://files.cnblogs.com/Terrylee/ModalPopupDemo.rar

作者:TerryLee
出处:http://terrylee.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted @ 2006-08-02 18:08 TerryLee 阅读(4367) 评论(23)  编辑 收藏 网摘 所属分类: [08]  Web开发

  回复  引用    
#1楼 2006-08-02 21:57 | 随风.Net [未注册用户]
真是太谢谢了
真了一天了 :)
老大真是好人
  回复  引用  查看    
#2楼 2006-08-02 22:01 | 山中豹      
一个使用masterpage的apx页面,在这个页面中有一个ContentPlaceHolder控件,在ContentPlaceHolder控件内有一个Button,设计时id="Button1",
运行后id="ctl00_ContentPlaceHolder1_Button1" 。
虽然使用atlas可以减少许多javascript,但仍经常需要通过
getelementbyId()来获取并改变控件的值,请问这时如何用javascript访问这些控件?

  回复  引用  查看    
#3楼 2006-08-02 22:21 | 隨風.NET      
AtlasControlToolkit.dll和Microsoft.Web.Atlas.dll
这两个有什么区别呢?还有如果YesButton我要调用另外的代码执行
是不是只有通过WebService或PageMethod来调用?(比如是发布一条信息,操作一下数据库)
  回复  引用    
#4楼 2006-08-03 11:13 | ugvanx [未注册用户]
InPlaceConfigurationSource source = new InPlaceConfigurationSource();
这个InPlaceConfigurationSource 要引用哪个命名空间。
  回复  引用  查看    
#5楼 [楼主]2006-08-03 16:35 | TerryLee      
@隨風.NET
AtlasControlToolkit是一组Atlas服务端控件,直接可以在项目中引用,不需要我们再去编写自己的控件。
  回复  引用  查看    
#6楼 2006-08-03 21:13 | 阿一      
用AJAX也能实现这种效果!
AtlasControlToolkit好像不是很稳定啊!
我用的时候和我的脚本类出现冲突!
不知道为什么!
  回复  引用    
#7楼 2006-08-04 08:02 | ugvanx [未注册用户]
还是通过Castle的官方网站找到了,不过它的硬编码配置没有实现,总是不能访问里面的实体,老大,实现过没有,还是照着官方网站抄的。
  回复  引用  查看    
#8楼 [楼主]2006-08-04 08:09 | TerryLee      
@阿一

AtlasControlToolkit的确有时候会不稳定,使用时要慎重。
  回复  引用  查看    
#9楼 [楼主]2006-08-04 08:10 | TerryLee      
@ugvanx

是可以实现的,我做过试验!
  回复  引用    
#10楼 2006-08-06 11:27 | man [未注册用户]
不知道能不能摭住 <select 元素,?
  回复  引用  查看    
#11楼 [楼主]2006-08-07 08:23 | TerryLee      
@man
可以的
  回复  引用    
#12楼 2006-08-19 02:17 | mw515 [未注册用户]
我有一个问题,在ModalPopup里面,点击一个服务器控件-按钮,想让它执行服务器端的代码,但不想关闭ModalPopup,想让它继续显示,我该怎么做?

(目前的情况是,我一点击按钮,虽然执行了代码,但却把ModalPopup也给关闭了)
  回复  引用  查看    
#13楼 [楼主]2006-08-23 14:21 | TerryLee      
@mw515
可能有点难度,因为它只提供了两个按钮,分别为OK and Cancle
  回复  引用  查看    
#14楼 2006-08-26 21:21 | 戴南      
看来如果想添加更多的功能就要自己去扩展了
  回复  引用  查看    
#15楼 [楼主]2006-08-28 08:34 | TerryLee      
@戴南
是这样的
  回复  引用  查看    
#16楼 2006-09-07 16:24 | 逄瑞锋      
@mw515
我想执行服务端代码可以用web service.
  回复  引用  查看    
#17楼 2006-10-01 23:07 | 伍迷[匿名]      
TerryLee 想请教一下,如果我的一条记录显示页面上有一个删除按钮(目的是删除本页的这条记录),点击后,用ModalPopup提示是否确认删除,点“否”则不做任何事,点“是”则触发“删除”按钮的服务器端事件,如何做呢?
因为我发现点击OK只是触发客户端的方法,不能响应服务端了,谢谢。
  回复  引用    
#18楼 2007-01-13 10:49 | 厚道 [未注册用户]
很好
  回复  引用  查看    
#19楼 [楼主]2007-01-15 08:37 | TerryLee      
@伍迷[匿名]
在客户端中调用服务端方法就可以了
  回复  引用  查看    
#20楼 [楼主]2007-01-15 08:37 | TerryLee      
@厚道
:)
  回复  引用    
#21楼 2007-01-17 00:32 | snyod [未注册用户]
代表党(.NET平台)感谢您.
全部收藏..........
  回复  引用    
#22楼 2007-03-20 16:04 | yzy [未注册用户]
TerryLee 你好,我最近下的版本,用的是ie7.0.点击delete 没有页面变灰的效果.请问下是怎么回事?




标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-08-15 08:04 编辑过
Google站内搜索

相关文章:

相关链接: