zoukankan      html  css  js  c++  java
  • Ext.NET 基础学习笔记01 (事件)

    1.客户端事件:

    <Listeners>

      <Click Handler="Ext.MessageBox.alert('提示','hello world');"></Click>    //使用Handler属性指向一段JS代码

      <Click Fn="fnSave"></Click>    //使用Fn属性指向一个JS方法

    </Listeners>

    --简写:<ext:Button runat="server" ID="btn2" Text="发布消息" Handler="fnButtonHandler"></ext:Button>  //按钮点击时触发fnButtonHandler的JS方法

    <Script>

      var fnSave = function(){....};

    </Script>

    2.服务端事件处理:

    2.1 Ext.Net服务器事件需要在DirectEvents中定义,它是Ext.Net独有的。

    DirectEvents将被回发到服务器进行处理,并将处理结果展示在页面中(如果有更新页面的话)。

     <DirectEvents>
              <Click OnEvent="btnSave_DirectClick">
                       <EventMask ShowMask="true" Msg="正在载入..."></EventMask>    //遮盖层可有可无
              </Click>
    </DirectEvents>

    --简写<ext:Button runat="server" ID="btnPublish" Text="消息发布者" OnDirectClick="btnSave_DirectClick"></ext:Button>

    后台C#代码:

            protected void btnSave_DirectClick(object sender, DirectEventArgs e)
            {
                X.MessageBox.Alert("Show", "DirectEvent has been for be trigger").Show();
            }

    2.2 DirectEvents事件参数传递  

         <DirectEvents>
                    <Click OnEvent="btnSave_DirectClick">
                            <ExtraParams>
                                <ext:Parameter Name="param1" Value="自定义参数"></ext:Parameter>    //传递参数到后台的btnSave_DirectClick方法
                            </ExtraParams>
                   </Click>
          </DirectEvents>

     ----后台btnSave_DirectClick方法接收参数

         string para = e.ExtraParams["param1"];

         X.MessageBox.Alert("Show", para).Show();

    3.处理服务器返回的数据

     3.1 从服务器端返回数据后调用客户端的JS代码

       <ext:Window runat="server" ID="winMain" Title="Ext.net.DirectEvents" Width="300" Height="200">
                <Buttons>
                    <ext:Button runat="server" ID="btnSave" Text="Save">
                        <DirectEvents>
                            <Click OnEvent="btnOk_DirectClick" Success="fnSuccess">    //点击按钮触发后台btnOk_DirectClick方法,调用成功后执行客户端的fnSuccess JS函数
                                <EventMask Msg="正在处理..." ShowMask="true"></EventMask>
                            </Click>
                        </DirectEvents>
                    </ext:Button>
                </Buttons>
         </ext:Window>

         var fnSuccess = function (response, result) {
                alert(result.extraParamsResponse.data);
          };

     

       C#代码:   

      protected void btnOk_DirectClick(object sender, DirectEventArgs e)
       {
                Thread.Sleep(2000);

                //X.MessageBox.Alert("提示", "按钮被点击").Show();

                 e.ExtraParamsResponse.Add(new Ext.Net.Parameter("data", "abc"));    //添加Ext响应参数,用于给前台获取

      }

    3.2 confirmation配置

     <Click OnEvent="btnOk_DirectClick" Success="fnSuccess">
                <EventMask Msg="正在处理..." ShowMask="true"></EventMask>
                 <Confirmation ConfirmRequest="true" Title="提示" Message="确定要提交到服务器?"></Confirmation>  //触发btnOk_DirectClick事件之前弹出确认框,让用户选择是否确定要提交到服务器处理
     </Click>

    4.通过DirectEvents来实现无刷新的页面请求

       4.1 采用ASP.NET控件时:

           <asp:Label ID="Label1" runat="server">名称:</asp:Label>
            <asp:TextBox runat="server" ID="txtName"></asp:TextBox>
            <asp:Button runat="server" ID="btnOK" Text="确定" />
            <ext:ResourceManager ID="ResourceManager1" runat="server">
                <CustomDirectEvents>
                    <ext:DirectEvent Target="btnOk" OnEvent="btnOk_DirectClick"></ext:DirectEvent>    //绑定btnOk按钮点击时触发后台btnOk_DirectClick方法
                                                 
                </CustomDirectEvents>
            </ext:ResourceManager>
       
           C#后台代码:
            protected void btnOk_DirectClick(object sender, DirectEventArgs e)
            {
           //this.txtName.Text = "Jack";
                //this.txtName.Update();                  //当需要设置ASP.NET控件的值时需要调用Update()方法去更新控件的值.
                                    (Update()方法是Ext.Net中的静态方法)
     
                string name = this.txtName.Text;
                X.MessageBox.Alert("提示", "按钮被点击,文本框的值是:" + name).Show();
            }
       
       4.2 采用HTML控件时:
            <ext:ResourceManager ID="ResourceManager1" runat="server">
              <CustomDirectEvents>
                  <ext:DirectEvent Target="htmlBtn" OnEvent="btnOk_DirectClick"></ext:DirectEvent>
              </CustomDirectEvents>
            </ext:ResourceManager>
     
             <label>名字:</label>
            <input type="text" name="txtName" />
            <input type="button" value="HTML按钮" id="htmlBtn" />
     
            后台C#代码:
            protected void btnOk_DirectClick(object sender, DirectEventArgs e)
            {
                string name = Request.Form["txtName"];
                X.MessageBox.Alert("提示", "按钮被点击,文本框的值是:" + name).Show();
            }
    5.DirectEvents调用WebServices
      
       <input type="button" value="获取" id="htmlBtn" />

     <ext:ResourceManager runat="server">

            <CustomDirectEvents>
                <ext:DirectEvent Target="htmlBtn" Url="WebServices/ExtNetService.asmx/GetServerTimeWindow"
                    Method="POST" Type="Load">
                </ext:DirectEvent>
            </CustomDirectEvents>
        </ext:ResourceManager>

        后台C#(Webservices代码)

            [WebMethod]
            public DirectResponse GetServerTimeWindow()
            {
                new Window("Server Time", Icon.Time)          //创建一个Ext.Net控件
                {
                    ID = "MyWindow",
                    Html = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
                }.Render();                      // Render()方法让Ext.Net控件显示出来
                return new DirectResponse();
            }
     
    6.DirectEvents调用一般处理程序
     
           <input type="button" value="获取" id="htmlBtn" />
           <ext:ResourceManager runat="server">
              <CustomDirectEvents>
                  <ext:DirectEvent Target="htmlBtn" Url="HandlerServerTimeHandler.ashx" Method="POST" Type="Load"></ext:DirectEvent>
              </CustomDirectEvents>
           </ext:ResourceManager>
     
            后台一般处理程序(ashx)代码:
            public void ProcessRequest(HttpContext context)
            {
                new Window("Server time", Icon.Time)
                {
                    ID = "MyWindow",
                    Html = DateTime.Now.ToString()
                }.Render();
                new DirectResponse().Return();
            }
        

     

    本文参考:https://www.cnblogs.com/youring2/p/3551463.html

  • 相关阅读:
    echars柱状图修改每条柱的颜色
    vue打开到新页面,并传递参数
    彻底了解websocket原理
    bind和on的区别
    Vue如何更新子组件
    Vue父子组件生命过程
    使用css3实现动画来开启GPU加速
    前端技术体系
    Vue中的~(静态资源处理)
    垂直居中的办法小结
  • 原文地址:https://www.cnblogs.com/YuanDong1314/p/12970423.html
Copyright © 2011-2022 走看看