关于ExtJSExtender

简介:

今天我将ExtJSExtender的源代码发布到了codeplex上面,项目的地址是https://extjsextender.codeplex.com/

ExtJSExtender将ExtJS中的部分控件进行了封装,以asp.net控件的服务器控件的形式提供,可以方便的在项目中使用。目前该项目已经完成了TreePanel、GridPanel、Button、DateField、NumberField和HtmlEditor的功能。

我写这个项目的初衷是希望能够帮助一些js比较差的朋友在项目中使用ExtJS丰富的界面功能。我很早就有这个想法。

在浏览器端,js是万能的,有丰富的UI库可以使用,这些UI的性能和用户体验都远优于asp.net自带的控件。而在做WebForm开发的时候,这些js UI库并不能直接被使用,不能够很好的与服务器端进行交互,学习这些UI库也是要付出很大的时间代价,影响项目的整体进度。

现在有了ExtJSExtender,我们可以像使用asp.net控件一样在页面中轻松的添加ExtJS的丰富UI效果。虽然这不是最优的途径,但也不失为一种实现方式。如果你对这个项目感兴趣,请在codeplex中加入这个项目,一起来为它添加更多的功能。

如何进行ExtJSExtender的控件开发

ExtJSExtender其实是一种script控件,继承自ExtJSControlBase基类,该基类继承自WebControl,并实现了接口IScriptControl。这样就可以在UpdatePanel中使用我们的控件了。

ExtJSControlBase类并没有具体的功能,只是向页面中输出了一些公用的JS代码,方便其它控件JS的使用。

下面说一下Util.cs

image

Util类完成了将Describe属性写入客户端的功能,序列化和反序列化,还有向客户端输出一个Hidden标签的功能。

然后是一些JSON转化的类。

最后一个代码段是DescribableProperty的定义。

在项目中,JS文件的生成操作,要设置为“嵌入的资源”,然后添加到资源中:

[assembly: WebResource("ExtJSExtender.Controls.HtmlEditor.HtmlEditorExtenderBehavior.js", "text/javascript")]

以HtmlEditor为例,说一下控件开发的步骤:

image

这是HtmlEditor的源代码,继承自Base类,并实现了这些接口:

IPostBackEventHandler:用来处理PostBack事件

ICallbackEventHandler:用来处理CallBack事件

IPostBackDataHandler:用来处理PostBack的数据。我在代码中实现了这个接口,但它并不会直接调用,不知道原因,还望高手指点。无奈之下只好在OnInit的时候调用一下来恢复数据。

INamingContainer:这个接口起到一个标记作用,用来生成一个唯一的控件id,并在render的时候写入html中。

ExtJSExtender HtmlEditor的JS文件:

Type.registerNamespace('ExtJSExtender.Controls');

ExtJSExtender.Controls.HtmlEditorExtenderBehavior = function (element) {
    ExtJSExtender.Controls.HtmlEditorExtenderBehavior.initializeBase(this, [element]);
}

先是定义JS的命名空间什么的,按照微软给定的格式,这没什么好说的。

然后在ExtJSExtender.Controls.HtmlEditorExtenderBehavior.prototype中定义这initialize和dispose方法,这两个方法分别在初始化和释放的时候自动调用。

image

我在初始化方法里面创建了HtmlEditor控件。这个控件监听change事件,如果内容改变,则会调用raiseChange方法:

image

raiseChange方法调用了控件内容的保存方法,将控件的值保存到客户端隐藏域内,这个隐藏域在PostBack的时候会提交到服务器,服务器可以获取这个值,完成数据在客户端和服务器端的持久化。

invoke方法用来触发服务器端是事件,在HtmlEditor中没有用到。

 

在代码中使用ExtJSExtender<请参照codeplex上的项目描述>

要在你的项目中使用ExtJSExtender,需要先添加ExtJSExtender的引用,然后在web.config的page->control下添加一个节点:

<add tagPrefix="ext" assembly="ExtJSExtender.Controls" namespace="ExtJSExtender.Controls"  />

然后,在页面中添加ExtJS和Jquery的引用:

<link rel="stylesheet" type="text/css" href="/ExtJS/resources/css/ext-all-gray.css" />
<script type="text/javascript" src="/ExtJS/ext-all-debug.js"></script>
<script type="text/javascript" src="/ExtJS/locale/ext-lang-zh_CN.js"></script>
<script type="text/javascript" src="/Scripts/jquery-1.8.3.js"></script>

因为项目依赖scriptmanager,所以还需要添加scriptmanager的引用

<asp:ScriptManager ID="scriptManager1" runat="server">
</asp:ScriptManager>

更多的内容请参照codeplex上的项目描述

如果认为此文对您有帮助,别忘了支持一下哦!

作者: 齐飞
声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。非商业,未授权,贴子请以现状保留,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。

转载:http://www.cnblogs.com/youring2/archive/2013/03/05/2944654.html
目录
相关文章
|
6天前
|
NoSQL Cloud Native Redis
Redis核心开发者的新征程:阿里云与Valkey社区的技术融合与创新
阿里云瑶池数据库团队后续将持续参与Valkey社区,如过往在Redis社区一样耕耘,为开源社区作出持续贡献。
Redis核心开发者的新征程:阿里云与Valkey社区的技术融合与创新
|
6天前
|
关系型数据库 分布式数据库 数据库
PolarDB闪电助攻,《香肠派对》百亿好友关系实现毫秒级查询
PolarDB分布式版助力《香肠派对》实现百亿好友关系20万QPS的毫秒级查询。
PolarDB闪电助攻,《香肠派对》百亿好友关系实现毫秒级查询
|
7天前
|
消息中间件 Cloud Native Serverless
RocketMQ 事件驱动:云时代的事件驱动有啥不同?
本文深入探讨了云时代 EDA 的新内涵及它在云时代再次流行的主要驱动力,包括技术驱动力和商业驱动力,随后重点介绍了 RocketMQ 5.0 推出的子产品 EventBridge,并通过几个云时代事件驱动的典型案例,进一步叙述了云时代事件驱动的常见场景和最佳实践。
115029 1
|
8天前
|
弹性计算 安全 API
访问控制(RAM)|云上安全使用AccessKey的最佳实践
集中管控AK/SK的生命周期,可以极大降低AK/SK管理和使用成本,同时通过加密和轮转的方式,保证AK/SK的安全使用,本次分享为您介绍产品原理,以及具体的使用步骤。
101800 1
|
7天前
|
自然语言处理 Cloud Native Serverless
通义灵码牵手阿里云函数计算 FC ,打造智能编码新体验
近日,通义灵码正式进驻函数计算 FC WebIDE,让使用函数计算产品的开发者在其熟悉的云端集成开发环境中,无需再次登录即可使用通义灵码的智能编程能力,实现开发效率与代码质量的双重提升。
95384 2
Doodle Jump — 使用Flutter&Flame开发游戏真不错!
用Flutter&Flame开发游戏是一种什么体验?最近网上冲浪的时候,我偶然发现了一个国外的游戏网站,类似于国内的4399。在浏览时,我遇到了一款经典的小游戏:Doodle Jump...
112727 12
|
12天前
|
SQL 存储 JSON
Flink+Paimon+Hologres 构建实时湖仓数据分析
本文整理自阿里云高级专家喻良,在 Flink Forward Asia 2023 主会场的分享。
71311 1
Flink+Paimon+Hologres 构建实时湖仓数据分析
|
15天前
|
弹性计算 运维 安全
访问控制(RAM)|云上程序使用临时凭证的最佳实践
STS临时访问凭证是阿里云提供的一种临时访问权限管理服务,通过STS获取可以自定义时效和访问权限的临时身份凭证,减少长期访问密钥(AccessKey)泄露的风险。本文将为您介绍产品原理,以及具体的使用步骤。
151041 4
|
14天前
|
监控 负载均衡 Java
深入探究Java微服务架构:Spring Cloud概论
**摘要:** 本文深入探讨了Java微服务架构中的Spring Cloud,解释了微服务架构如何解决传统单体架构的局限性,如松耦合、独立部署、可伸缩性和容错性。Spring Cloud作为一个基于Spring Boot的开源框架,提供了服务注册与发现、负载均衡、断路器、配置中心、API网关等组件,简化了微服务的开发、部署和管理。文章详细介绍了Spring Cloud的核心模块,如Eureka、Ribbon、Hystrix、Config、Zuul和Sleuth,并通过一个电商微服务系统的实战案例展示了如何使用Spring Cloud构建微服务应用。
103517 9
|
14天前
|
Java 数据处理 调度
更高效准确的数据库内部任务调度实践,阿里云数据库SelectDB 内核 Apache Doris 内置 Job Scheduler 的实现与应用
Apache Doris 2.1 引入了内置的 Job Scheduler,旨在解决依赖外部调度系统的问题,提供秒级精确的定时任务管理。