• Coolite Toolkit学习笔记二:服务器端Alert,Confirm,Prompt


     

    一:Alert
          Alert组件最简单的用法就是直接弹出一个消息提示框:
    protected void Button_Click(object sender, AjaxEventArgs e)
    {
        Ext.Msg.Alert(
    "标题内容""消息内容"
    ).Show();
    }

          如果我们需要在弹出的提示框点了“确定”以后要执行其他操作怎么办呢?这时候可以使用Alert方法的重载方法,通过JFunction指定一个客户端方法,点了“确定”后就指定相应的客户端JavaScript方法,使用如下:
    protected void Button_Click(object sender, AjaxEventArgs e)
    {
        Ext.Msg.Alert(
    "标题内容""消息内容"new JFunction { Fn = "JsMethod"
     }).Show();
    }
    <ext:Button ID="Button1" runat="server" Text="Submit">
        
    <AjaxEvents>
            
    <Click OnEvent="Button_Click"></Click>
        
    </AjaxEvents>
    </ext:Button>
    <script type="text/javascript">
        
    function JsMethod() {
            alert(
    "Client JsMethod");
        }
    </script>

          Coolite Toolkit还为Alert提供了四中图标UI效果,他们分别是问题(Question)、警告(Warning)、错误(Error)和信息(Informational),使用不同的参数将构建出不同的Alert显示风格。使用方法如下:
    protected void Button_Alert(object sender, AjaxEventArgs e)
    {
        Ext.Msg.Show(
    new
     MessageBox.Config
        {
            Title 
    = "图标提示框"
    ,
            Message 
    = "这个框带个图标"
    ,
            Buttons 
    =
     MessageBox.Button.OK,
            Icon 
    =
     MessageBox.Icon.INFO,
            AnimEl 
    = this
    .btnAlert.ClientID
        });
    }
          图标的取值可以直接通过MessageBox.Icon枚举设置,分别定义有:NONE、ERROR、INFO、QUESTION和WARNING。
                            

          除了上面的应用外,还可以通过Message.ButtonConfigs来配置Alert的高级应用,比如配置确认对话框,根据不同选择执行不同的AjaxMethod方法(下面代码里的NS为通过ScriptManager指定的客户端名称空间,其功能等同于Coolite.AjaxMethods)。
    protected void Button_Click(object sender, AjaxEventArgs e)
    {
        Ext.Msg.Alert(
    "标题内容""消息内容"new
     MessageBox.ButtonsConfig
        {
            Yes 
    = new
     MessageBox.ButtonConfig
            {
                Handler 
    = "NS.DoYes()"
    ,
                Text 
    = "确定"

            },
            No 
    = new MessageBox.ButtonConfig
            {
                Handler 
    = "NS.DoNo()"
    ,
                Text 
    = "取消"

            }
        }).Show();
    }

    [AjaxMethod]
    public void DoYes()
    {
        Ext.Msg.Alert(
    "操作提示""你刚刚点了-确定"
    ).Show();
    }

    [AjaxMethod]
    public void
     DoNo()
    {
      
      Ext.Msg.Alert("操作提示""你刚刚点了-取消"
    ).Show();
    }

                      
    注:点了“确定”后直接执
    行服务端的另一方法没有实现出来,还望实现过的朋友指点,谢谢。

    二:Confirm
          上面通过Coolite Toolkit的扩展功能将Alert组件实现了Confirm的效果,其实Confirm自身的功能也是非常强大的,同Alert一样,最简单的使用则是直接弹出确认对话框。
    protected void Button_Confirm(object sender, AjaxEventArgs e)
    {
        Ext.Msg.Confirm(
    "操作提示""消息内容"
    ).Show();
    }

          如果要知道是点击了那一个操作按扭,则同样可以通过JFunction指定一个客户端的JavaScript方法用来接收操作结果。
    protected void Button_Confirm(object sender, AjaxEventArgs e)
    {
        Ext.Msg.Confirm(
    "操作提示""消息内容"
    ,
            
    new
     JFunction
            {
                Fn 
    = "ShowResult"

            }).Show();
    }
    <ext:Button ID="btnConfirm" runat="server" Text="Confirm">
        
    <AjaxEvents>
            
    <Click OnEvent="Button_Confirm"></Click>
        
    </AjaxEvents>
    </ext:Button>
    <script type="text/javascript">
        
    function ShowResult(btn) {
            Ext.Msg.alert(
    "你刚刚点了按扭:" + btn);
        }
    </script>
          Confirm同样也可以定制根据操作调用AjaxMethod,实现方式和本文前面的Alert实现方式一样。

    三:Prompt
          Prompt可应用于简单的是数据录入,Coolite Toolkit里的服务端Prompt使用非常简单,同上面Alert和Confirm一样通过JFunction指定客户端方法处理操作结果。
    protected void Button_Prompt(object sender, AjaxEventArgs e)
    {
        Ext.Msg.Prompt(
    "数据录入""请在下面录入数据"

            
    new
     JFunction 
            { 
                Fn 
    = "showResultText"
     
            }).Show();
    }
    <ext:Button ID="btnPrompt" runat="server" Text="Prompt">
        
    <AjaxEvents>
            
    <Click OnEvent="Button_Prompt"></Click>
        
    </AjaxEvents>
    </ext:Button>
    <script type="text/javascript">
        
    function showResultText(button,text) {
            alert(
    "你录入的数据为:" + text);
        }
    </script>

          以上实现的是单行的Prompt,Coolite Toolkit也提供了多行支持,使用如下:
    protected void Button_Prompt(object sender, AjaxEventArgs e)
    {
        Ext.Msg.Show(
    new
     MessageBox.Config
        {
            Title 
    = "数据录入"
    ,
            Message 
    = "请在下面录入数据:"
    ,
            Width 
    = 300
    ,
            Buttons 
    =
     MessageBox.Button.OKCANCEL,
            Multiline 
    = true
    ,
            AnimEl 
    = this
    .btnPrompt.ClientID,
            Fn 
    = new JFunction { Fn = "showResultText"
     }
        });
    }
                
          上图效果主要是通过Ext.Msg.Show()方法,通过该方法还可以定制许多我们需要的UI效果,比如说定制一个进度条效果,其实现为如下代码片段:
    protected void Button_Wait(object sender, AjaxEventArgs e)
    {
        Ext.Msg.Show(
    new
     MessageBox.Config
        {
            Title 
    = "请等待"
    ,
            Message 
    = "系统正在加载,请等待"
    ,
            ProgressText 
    = "系统加载中"
    ,
            Width 
    = 300
    ,
            Progress 
    = true
    ,
            Closable 
    = false
    ,
            AnimEl 
    = this
    .btnWait.ClientID
        });
        
    this
    .StartLongAction();
    }
    private void
     StartLongAction()
    {
        
    this.Session["Task1"= 0
    ;
        ThreadPool.QueueUserWorkItem(LongAction);

        
    this.TaskManager1.StartTask("Task1"
    );
    }
    private void LongAction(object
     state)
    {
        
    for (int i = 0; i < 10; i++
    )
        {
            Thread.Sleep(
    1000
    );
            
    this.Session["Task1"= i + 1
    ;
        }
        
    this.Session.Remove("Task1"
    );
    }
    protected void RefreshProgress(object
     sender, AjaxEventArgs e)
    {
        
    object progress = this.Session["Task1"
    ];
        
    if (progress != null
    )
        {
            Ext.MessageBox.UpdateProgress(((
    int)progress) / 10f, ""
    );
        }
        
    else

        {
            
    this.TaskManager1.StopTask("Task1");
            Ext.MessageBox.Hide();
            
    this.ScriptManager1.AddScript("ProgressResult();"
    );
        }
    }


    <ext:Button ID="btnWait" runat="server" Text="Wait">
        
    <AjaxEvents>
            
    <Click OnEvent="Button_Wait"></Click>
        
    </AjaxEvents>
    </ext:Button>
    <ext:TaskManager ID="TaskManager1" runat="server">
    <Tasks>
        
    <ext:Task 
            
    TaskID="Task1"

            Interval
    ="1000" 
            AutoRun
    ="false">

            
    <AjaxEvents>
                
    <Update OnEvent="RefreshProgress" />
            
    </AjaxEvents>                    
        
    </ext:Task>

    </Tasks>
    </ext:TaskManager>
    <script type="text/javascript">
    function ProgressResult() {
        alert(
    "进度条走完了");
    }

    </script>

                      
    注:此文章转载至Bēniaǒ成长笔记
  • 相关阅读:
    Eth-Trunk 技术
    MSTP技术
    STP生成树原理及不足
    表示数值的字符串(python)
    字符流中第一个不重复的字符(python)
    连续子数组的最大和(python)
    和为S的两个数字(python)
    数组中重复的数字(python)
    构建乘积数组(python)
    idea中查看类层级class hierarchy
  • 原文地址:https://www.cnblogs.com/hailexuexi/p/1903563.html
Copyright © 2020-2023  润新知