http://www.cnblogs.com/walkingboy/archive/2006/08/10/Cilent_KMessageBox.html

前言:

    继上文([JavaScript]自定义Title的显示方式多了几个层而已,大同小异:
   

  1[JavaScript]自定义MessageBox
  2

    接下来应该为MessageBox提供行为能力.我们需要模拟Confirm和Alert.
    原始的Confrim需要返回false或者true来决定是否要运行postback事件.
    在这里我转换了一下思路,不返回值,而是直接将postback事件的脚本(_doPostBack('',''))传入MessageBox,并绑定到相关的按钮上.所以我们的需要接受传入的参数主要有:消息标题,消息内容,按钮事件
    OK,接下来构造Javascript中MessageBox的ShowConfirm函数:

 1}

   有了显示还需要做隐藏处理,即上面调用的KMessageBox.Hide();
  
 1[JavaScript]自定义MessageBoxKMessageBox.Hide = function()
 2

    至于模拟Alert,就可以模仿ShowConfirm来做了,so easy
   
    ok,整个MessageBox 类看起来已经像模像样了.运行一下...
   
     噫,不对,好像缺了点什么....没错,它不是ShowModal类型的...用户还可以任意点下面的页面元素.

     这个怎么模拟?

     当然还是div了...做一个整个页面大小的div覆盖在所有页面元素之上,MessageBox层之下.
    
     不过有个弊端,div不能覆盖select控件,那只好搬出iframe了..所谓道高一尺魔高一丈

   
 1

    在MessageBox中Show的时候,调用DialogModal.Show,Hide的时候调用DialogModal.Hide 即ok了.

    有了上面的两个Javascript类,我们就可以很好的做服务端的封装了,取到control的dopostback函数,直接传入给ShowConfrim就可以了.
   
1[JavaScript]自定义MessageBox//ShowConfirm客户端事件
2[JavaScript]自定义MessageBoxprivate string JS_CONFIRM = "KMessageBox.ShowConfirm('{0}','{1}','{2}',{3},{4});return false;";
3[JavaScript]自定义MessageBox
4[JavaScript]自定义MessageBox//获取DoPostBack事件,这边还有个难点,怎么取得客户端验证事件,目前我还没有解决
5[JavaScript]自定义MessageBoxstrOnClickScript = "function(){" + Page.ClientScript.GetPostBackEventReference(control, ""+ ";}";
6[JavaScript]自定义MessageBox//注册MessageBox事件,
7[JavaScript]自定义MessageBox control.Attributes["onclick"+= string.Format(JS_CONFIRM, this.mImgDir, caption, content, strOnClickScript, "function(){}");

源码:

代码插入比较慢,而且经常ShowDialogModal框不返回,晕死.....直接down吧: KMessageBox_Source

);

 

}

相关文章: