zoukankan      html  css  js  c++  java
  • Ext.Net学习笔记02:Ext.Net用法概览

    这两天越来越觉得Ext.Net很强大,如果运用熟练可以极大的提高编程效率。如果你也要学习Ext.Net,推荐你看一下《Ext.Net Web 应用程序开发教程》。

    上一篇介绍了如何在ASP.NET WebForm中使用Ext.Net,这一篇将介绍我今天的学习心得,看看Ext.Net的概览。

    Ext.Net与ExtJS代码比较

    上一篇中我们创建了一个使用Ext.Net创建了一个window窗口,代码非常简单:

    <ext:Window runat="server"
        ID="win"
        Title="示例窗口"
        Width="300"
        Height="200"
        AutoShow="true">
    </ext:Window>

    如果我们使用ExtJS代码来创建这个窗口,代码会是什么样的呢?请看下面:

    Ext.create("Ext.window.Window", {
        id:"win2",
        title: "示例窗口2",
        height: 200,
         300,
        autoShow: true
    });

    看这两段代码是不是很像,Ext.Net只是将ExtJS的配置属性进行了封装,作为空间的属性,可以在Visual Studio中进行非常友好的智能提示,效率提升不止一倍啊。

    另外,Ext.Net还支持控件的嵌套定义,跟ExtJS中的items配置项、buttons配置项一样,请看下面的代码:

    <ext:Window runat="server"
        ID="win"
        Title="示例窗口"
        Width="300"
        Height="200"
        Layout="FitLayout"
        AutoShow="true">
        <Items>
            <ext:FormPanel runat="server" ID="extForm" BodyPadding="5">
                <Items>
                    <ext:TextField runat="server" ID="txtName" FieldLabel="姓名"></ext:TextField>
                    <ext:NumberField runat="server" ID="txtAge" FieldLabel="年龄"></ext:NumberField>
                </Items>
                <Buttons>
                    <ext:Button runat="server" ID="btnSave"
                        Icon="DatabaseSave" Text="保存">
                    </ext:Button>
                </Buttons>
            </ext:FormPanel>
        </Items>
    </ext:Window>

    这仍然是我们的window,新的效果如下:

    image

    很酷吧,接下来我们一起看看它的事件机制。

    Ext.Net的事件处理

    Ext.Net中的事件分为客户端事件和服务器端事件,客户端事件需要页面中JS来处理,服务器端事件则会无刷新的提交给服务器,在服务器处理完成并将结果显示在页面中。

    拿我们上面窗口中的保存按钮为例,我们来介绍一下如何处理客户端事件。

    客户端事件处理

    首先,我们来添加一个客户端的单击事件:

    <ext:Button runat="server" ID="btnSave"
        Icon="DatabaseSave" Text="保存">
        <Listeners>
            <Click Handler="Ext.MessageBox.alert('提示', '保存按钮被单击')" />
        </Listeners>
    </ext:Button>

    跟ExtJS中的写法一样,使用listeners来添加事件。当我们在Listeners标签中输入左尖括号以后,visual studio 会提示我们所有可用的事件:

    image

    这种编程方式实在是太快了,效率完全可以达到ExtJS熟练的水平(题外话,套用一句广告词:根本停不下来……)。

    Handler 属性保存一段JS代码,如果要添加一个处理方法,则需要使用Fn属性:

    <ext:Button runat="server" ID="btnSave"
        Icon="DatabaseSave" Text="保存">
        <Listeners>
            <Click Fn="fnSave" />
        </Listeners>
    </ext:Button>

    注意,使用Fn属性的时候,需要确保我们的页面中已经定义了fnSave方法:

    function fnSave() {
        //此处添加保存的处理逻辑
        Ext.MessageBox.alert('提示', '保存按钮被单击')
    }

    此处只使用了click事件,完整是事件列表可以参考ExtJS API文档。

    服务器端事件处理

    既然使用了Ext.Net服务器控件,恐怕大家更希望使用服务器端事件吧。Ext.Net服务器事件需要在DirectEvents中定义,它是Ext.Net独有的。DirectEvents将被回发到服务器进行处理,并将处理结果展示在页面中(如果有更新页面的话)。

    来看一下DirectEvents

    <ext:Button runat="server" ID="btnSave"
        Icon="DatabaseSave" Text="保存">
        <DirectEvents>
            <Click OnEvent="btnSave_DirectClick"></Click>
        </DirectEvents>
    </ext:Button>

    对应的服务器处理方法如下:

    protected void btnSave_DirectClick(object sender, DirectEventArgs e)
    {
        X.MessageBox.Alert("提示", "保存按钮被单击").Show();
    }

    如果我们需要在执行服务器端处理的时候显示遮罩层,可以在Click中添加配置节点:

    <ext:Button runat="server" ID="btnSave"
        Icon="DatabaseSave" Text="保存">
        <DirectEvents>
            <Click OnEvent="btnSave_DirectClick">
                <

    EventMask ShowMask="true" Msg

    ="正在加载..." />
            </Click>
        </DirectEvents>
    </ext:Button>

    另外,Ext.Net Direct Events还可以传递自定义参数:

    <ext:Button runat="server" ID="btnSave"
        Icon="DatabaseSave" Text="保存">
        <DirectEvents>
            <Click OnEvent="btnSave_DirectClick">
                <ExtraParams>
                    <

    ext:Parameter Name="param1" Value

    ="自定义参数值" />
                </ExtraParams>
                <EventMask ShowMask="true" Msg="正在加载..." />
            </Click>
        </DirectEvents>
    </ext:Button>

    在服务器端的处理方法中,我们可以轻易的获取到这个参数值:

    protected void btnSave_DirectClick(object sender, DirectEventArgs e)
    {
        

    string param1 = e.ExtraParams["param1"

    ];
        X.MessageBox.Alert("提示", "保存按钮被单击,传入的参数值:" + param1).Show();
    }

    Ext.Net中的DirectEvents所支持的事件类型同样可以参考ExtJS的API文档。

    另外Ext.Net还有一个自定义的MessageBus机制,今天还没有吃透,明天继续!

  • 相关阅读:
    linux 命令
    linux 后门防范
    linux date
    shell 常用参数
    linux rule策略
    vlan对服务器要注意的事情
    STL vector——c++
    蛇形矩阵
    简单a+b
    小 X 与数字(ten)
  • 原文地址:https://www.cnblogs.com/youring2/p/3551463.html
Copyright © 2011-2022 走看看