令人头痛的ExtJS日期时间控件
1 缘由
Ext提供了日期、时间的控件,但没有将日期和时间组合在一起的控件。在网上搜索时,有前辈创建或重写了时间相关的类,并提供了源码。不得不说那位作者对 extjs 框架理解得很透彻,虽然不知道他当时是怎样研究的,但不得不服啊。
之前网上提供的代码,我没有详细研究重写的实现方法。但我不太赞成之前的路径组织或者架构的实现方式。因为要使用这个起始结束时间控件,需要在一个页面中包含好几个js文件,这多不方便啊。经常遇到的情况是,纠结了半天,调试了半天,最后才发现少包含了一个 js 文件。况且,extjs 拥有 这么强大的类使用框架,不利用下岂不可惜。所以,我现在采用的解决办法:将这些类都重新命名,并依此放到对应的文件路径上。能够解决这个问题,非常感谢我同事GW的帮助。当时,我实在是被这几个文件中的命名方式弄得晕头转向。现在的解决办法是我自认为比较满意的了。
2 使用方法
原来CSDN的博客不能添加附件,所以,我将示例代码防到http://download.csdn.net/detail/lvye1221/5999545了.
我在 apache 目录下部署了测试示例。将附件中的测试用例,按照以下方式部署好,即可成功访问:
apache 根目录包含: extjs 4.0.7 的文件夹,再新建一个测试用的文件夹 test-form, 根目录的目录列表如下所示:
ext-4.0.7-gpl
test-form/
test-form 文件夹里的列表如下所示,即为解压后的测试示例代码。
test-container.html
zhiyuan/
部署成功后,访问地址为: [http://localhost/test-form/test-container.html] 即可看到如下效果:
当然,上述部署的方式只是为了配合 test-container.html 中能够让代码找到正确的库文件,同时部署在 apache 也只是我个人比较偏爱的方式。读者可以采用自己的方式即可。但如果按照上述的方式部署是测试通过的。
3 部分问题及解决
3.1 label和时间框不在一行?
采用新的路径组织的结构,发现在测试代码中出现如下图所示的情况,标题、时间框、选择按钮,三个不位于同一行,但是,在工作项目中使用时,却出现了满意的情况。
未对齐的情况
项目中对齐的情况
猜测是引用的CSS样式问题,这时发现我的测试代码中是引用的 extjs 4.1 的样式,而实际项目中所采用的是 extjs 4.0.7 版本,同时,测试用例和实际项目都是所采用 extjs 4.0.7 版本的代码。找到原因就好办了,参照项目将 CSS 文件替换过来,问题就解决了。
再想深一些,如果不是存在参照项目中的代码,那么遇到这种问题真的有些不知所措,通过浏览器的元素查看器,会发现时间控件的宽度一直都固定在225,不管我怎样修改控件的总体宽度,但中间存在议程 x-box-inner 的宽度一直都是 255,这样,因为放不下元素,所以它们就竖排并列显示了。
可能还可以考虑继续找下去,v4.0.7 和 v4.1 两者之间的 css 文件到底是相差了什么呢?为什么会造成生成的 DOM 元素的宽度被限制下了。这可能需要花费更多的时间来研究。如果有读者知道原因,请在留言中告诉我,谢谢。
3.2 只显示一个时间选择控件
当我们只需要提供一个日期时间控件,而不是同时包含起始和结束这样中间的控件时,怎么办呢?我当时直接使用 DateTime 控件,日期倒是设置成了当前日期,但是却时间却是一片空白。并且整个控件在加载时就将已经弹出显示了。
通过查看提供起始时间和结束时间的控件代码,找到了。
myContainer.add({
xtype: 'datetimefield',
format: 'Y-m-d H:i:s'
}); Ext.create('zhiyuan.form.DateTimeField', {
renderTo: 'dateTimePicker',
format: 'Y-m-d H:i:s'
});
4 总结
在遇到问题时,能够主动去搜索解决办法来解决问题,这是很不错的。只是在团队合作中,真不能随便更改大家一起使用的库文件,如果随意更改或删除一些文件,将会给其他正在使用的同事造成很大的麻烦,他不知道这个库被修改了,花费很多时间来找出错的原因。又或者他知道被修改了,但是修改的文件不能完全适用他的情况,他将会要花费更多的时间来修改。不管怎样,这两种情况都会让同事很不爽的。
在探索解决实现日期和时间同时选的过程中,我发现解决网页问题的流程是:先网上搜索,能够让网上的示例跑起来;发现别人写的不好,对参考代码进行修改;最后发现自己写的不好,再进行修改。只是这段过程有些漫长,还时不时遇到一些头痛的问题。为什么会头痛呢?其实是因为对编程的语言和不熟悉库的使用情况。当解决完问题后,就不头痛了,就高兴啦。
当然,不要只顾着高兴了,在解决完一个问题时,一定要对问题进行及时的整理。解决遇到的这个问题时,总觉得这个问题很简单,而觉得没有必要整理,但当再次遇到这个问题时,发现完全不知道解决办法,这就会让人很头大。因为我就有这样的经历,当时解决这个时间控件路径的问题,但没有及时整理,等这次再需要解决同样的问题时,居然一点都不记得了,又重新解决并痛苦了一遍,这也是我写这篇博客的原因。
5 最近的感悟
八月过了2/3多了,我才发表了一篇博客,这样可不行。当然,可以说项目太紧,下班后太累……,找这样一大堆借口的借口是没有意义的。一定坚持写博客,自己定的计划是每个月至少四篇博客(嘿嘿,这样就可以一直得到持之以恒奖了)。顺便将最近的一些做项目的感悟写在这了。
当有需要增加新的需求时,通常我们就会加一点代码,再或者修改功能时候再加一点代码。其实也没什么特别好的办法,因为添加代码可以很快地实现需求。可是一定不要忘记:在项目有空余时间的时候好好地整理代码,能简化地就简化,能删除的就删除。可通常情况下,我们好像只要解决了问题,谁还记得当时很粗糙的代码需要修改呢?我想,优秀的程序员是知道的。
又想对我的程序员人生发发感叹了,有时真觉得我们不需要太聪明,只需要多多记录,多多思考,多花点有用时间来学习即可。人生有很多的事情,程序、音乐、演讲、爱情、家庭,只要自己真心付出了,恰当地使用利用好时间,就会有收获,就会成功。加油!
令人头痛的ExtJS日期时间控件的更多相关文章
- jquery日期时间控件
代码下载地址: jquery日期时间控件下载地址 . 工作中用到, 这里分享一下, 避免重复摸索劳动. 一. HTML 文件 <!DOCTYPE HTML PUBLIC "- ...
- 学习日期时间控件 daterangepicker
aterangepicker 是一款日期时间控件,可选择“年,月,日,时,分,秒”,可选择单面板,也可选择双面板(起止时间). 单面板示例:daterangepicker 单面板 codepen 在线 ...
- jquery-ui日期时间控件实现
日期控件和时间控件为独立控件,日期时间控件要同一时候导入日期控件和时间控件的js,然后在日期控件加入时间控件显示參数,没有导入时间控件js.日期控件函数设置的时间控件參将包错 日期控件官网网址:htt ...
- Android日期时间控件DatePickerDialog和TimePickerDialog
1.DatePickerDialog 在一些万年历.日程表等APP上我们经常可以看到日期选择控件,由于很少有用户会老老实实的手工输入日期,所以该控件的作用就是为了控制用户的输入格式,在Android中 ...
- jquery datetimepicker 日期时间控件的使用及参数说明
首先下载 jquery.datetimepicker.css jquery.datetimepicker.main.js 1. 引入css和js (注:该控件要依赖于jquery) <link ...
- Extjs4 DateTimeField,日期时间控件完美版
网上若干类似的控件,要么是有bug,要么是操作体验不合理,这里贡献一个比较科学的版本. 扩展包下载: http://files.cnblogs.com/qidian10/Ext.ux.rar 解压至E ...
- 小程序实现日期时间控件picker
小程序自带的组件中有日期跟时间的picker,但就缺个日期时间picker组件,那没办法,只能自己弄一个,这个组件不是很难,比较难的地方是要根据不同年份(是否闰年)跟月份决定一个月里有多少天. 我直接 ...
- ECSTORE日期时间控件转换为时间戳的方法
如果你在后台使用<{input type=”time” name=”time”}>的话,后台获取到的表单数据为: ["_DTYPE_TIME"]=> array( ...
- iOS 日期时间控件
UIDatePicker *picker = [[UIDatePicker alloc]initWithFrame:CGRectMake(0, 0,[UIParam widthScreen] ,50 ...
随机推荐
- Qt深入:不能不知道的Type、Attribute和Flags
Qter高手与新手的区别在于:知道还是不知道 Qt不是开发语言,所以无所谓谁厉害.但使用他的Qter却有着差异,也许是面向对象语言本身的.或者实际经验上的.而对于Qt本身来说,高手与新手最显著的差异在 ...
- IntPtr与自定义结构互转
//IntPtr转自定义结构 struct onlydata { IntPtr hwnd; }; onlydata pd=new onlydata(); IntPtr pd; pd=Marshal.P ...
- 2015 UESTC Training for Search Algorithm & String - M - Palindromic String【Manacher回文串】
O(n)的复杂度求回文串:Manacher算法 定义一个回文值,字符串S是K重回文串,当且仅当S是回文串,且其长度为⌊N/2⌋的前缀和长度为⌊N/2⌋的后缀是K−1重回文串 现在给一个2*10^6长度 ...
- SPOJ 3937 - Wooden Sticks 最长上升子序列LIS
给了n个(n<=5000)木棍的长度hi与宽度wi(均小于10000),现在机器要打磨这些木棍,如果相邻连个木棍hi<=hj并且wi<=wj就不需要调整机器,问如何排序使得机器调整的 ...
- FineUI初学手册-部分JS整理
有人老找JS,我吧FineUI自己写的JS沾过来方便大家看看,在实现前端的时候更灵活 JS 实例 注释 控件 F.ready F.ready(function(){}); 就是ready 很多方法 ...
- asp.net 真正实现完全跨域单点登录
单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. asp.ne ...
- Sql Xtype
SQL Server xtype的介绍 在数据库内创建的每个对象(约束.默认值.日志.规则.存储过程等)在表中占一行.只有在 tempdb 内,每个临时对象才在该表中占一行. 列名 数据类型 描 ...
- 在浏览器运行 java applet时遇到的一些问题及其解决方法
运行 java applet时提示:您的安全设置已阻止本地应用程序运行,如何解决?如下图所示 这时候通过设置java的安全级别就可以了. 控制面板->程序->Java->安全 将安全 ...
- cas sso单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析
转:http://blog.csdn.net/ae6623/article/details/8848107 1)PPT流程图:ppt下载:http://pan.baidu.com/s/1o7KIlom ...
- 浅谈C++ 异常处理的语义和性能
异常处理是个十分深奥的主题,这里只是浅论其对C++性能的影响. 在VC++中,有多个异常处理模式,三个最重要: No exception handling (无异常处理) C++ only (C++语 ...