关于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
目录
相关文章
|
存储 数据处理 数据格式
51单片机双机通信实现
51单片机双机通信实现
799 1
|
存储 安全 API
C++ 17 新特性 C++ String View:了解C++ 17 std::string_view的使用场景
C++ 17 新特性 C++ String View:了解C++ 17 std::string_view的使用场景
671 2
|
Oracle Cloud Native 关系型数据库
Oracle Linux 9.5 正式版发布 - Oracle 提供支持 RHEL 兼容发行版
Oracle Linux 9.5 正式版发布 - Oracle 提供支持 RHEL 兼容发行版
241 10
Oracle Linux 9.5 正式版发布 - Oracle 提供支持 RHEL 兼容发行版
|
机器学习/深度学习 人工智能 监控
足球预测:进球率预测法的接力人——AI预测
足球预测已有近200年历史,但依赖“自媒体人”推送的方式存在诸多问题。本文介绍了一种基于1990年大卫·杰克逊和K.R.莫舍斯基研究的进球率预测法,通过比较球队平均进球率来预测比赛结果。结合AI技术,该方法可批量处理数据并优化预测模型,提高预测准确性。文中还展示了AI预测的实际应用案例及代码实现,并强调了AI在赛事监控中的重要性。尽管AI预测效果显著,但仍需理性对待。
1275 1
|
人工智能 自然语言处理 机器人
谷歌将大模型集成在实体机器人中,能看、听、说执行57种任务
【9月更文挑战第17天】近年来,人工智能在多模态大模型领域取得显著进展。谷歌最新研发的Mobility VLA系统,将大模型与实体机器人结合,实现了视觉、语言和行动的融合,使机器人能理解并执行复杂多模态指令,如“我应该把这个放回哪里?”系统在真实环境测试中表现出色,但在计算资源、数据需求及伦理问题上仍面临挑战。相关论文发布于https://arxiv.org/abs/2407.07775。
302 9
|
消息中间件 Unix
操作系统的心脏:深入理解进程间通信(IPC)
在现代计算中,操作系统扮演着至关重要的角色,它不仅管理着硬件资源,还负责协调和优化应用程序之间的交互。本文将深入探讨操作系统中的一个核心概念——进程间通信(IPC),揭示其背后的机制以及在实际应用中的重要性。通过通俗易懂的语言和条理清晰的解释,本文旨在为读者提供一个关于IPC的全面了解,从基本定义到高级应用,带领大家走进操作系统的神秘世界。
|
前端开发 JavaScript 开发者
震惊!Web 前端 href 与 src 竟有如此差异,快来一探究竟,掌握热门技术核心要点
【8月更文挑战第26天】在Web前端开发中,`href`与`src`是两个常用属性,但其差异常被忽视。`href`(超文本引用)用于创建文档间的链接关系,如链接至外部网页或引入CSS文件;`src`(来源)则用于在文档内嵌入资源,如图片或JavaScript文件。两者在使用场景及加载机制上有所不同:`href`支持并行下载且不阻塞渲染,适合非关键资源加载;而`src`加载时会暂停页面渲染直至资源加载完成,适用于如图片和脚本这类对页面显示至关重要的资源。因此,正确理解并运用这两个属性对于保障网页性能和用户体验至关重要。
426 3
|
SQL Shell 数据库
在TDengine容器中创建初始化数据库的Shell命令实例
以上就是在Docker容器环境中部署并初始化TDengine数据库的全过程,希望对你有所帮助。
438 0
|
编解码 监控
Zoom + OBS + B 站直播配置
Zoom + OBS + B 站直播配置
454 0
|
数据采集 Linux 测试技术
如何选择适合的LabVIEW版本进行开发
如何选择适合的LabVIEW版本进行开发
373 1