FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 15988|回复: 15
打印 上一主题 下一主题

【分享】My97DatePicker与FineUI控件结合

[复制链接]
跳转到指定楼层
楼主
发表于 2013-10-12 11:50:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    首先非常感谢三石大神为我们提供这么强大的控件。FineUI确实为我们开发人员提供了许多便利,至少对我们这些不擅长美工设计,而且也没有美工支持的人来说,FineUI为我们解决了界面设计这一大难题。如果说有美中不足的地方的话,应该就是现在FineUI中的日期控件。
    目前FineUI的日期控件只能选择日期,无法精确到时、分、秒,而报表统计中我们经常需要精确到时、分、秒(至少我做过的很多报表都有这方面的需求)。其实这点之前我看论坛上有其他水友提过在日期控件中增加时、分、秒的选择、跟My97DatePicker控件做整合,但是估计是考虑到与其他日期控件整合会涉及到版权的问题,所以三石大神也一直没有增加这个功能,虽然后来有增加TimePicker控件,但是感觉还是不够灵活。
    当然,必须肯定的一点是目前这个日期控件还是可以满足大部分人的需要的。而且目前在FineUI中使用My97DatePicker控件的方法:

  1. <P><ext:ContentPanel ID="ContentPanel1" EnableBackgroundColor="true" ShowBorder="false" ShowHeader="false" runat="server">
  2.        开始时间:</P>
  3. <P>       <input type="text" class="Wdate" id="text1" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:00:00',readOnly:true})" runat="server" />
  4. </ext:ContentPanel></P></SPAN></FONT>
复制代码
    虽然通过上面这种方法也是可以实现,但是这种实现方式会严重影响页面的整体风格,尤其是在使用FormRow控件进行布局的时候,时间控件是无法自适应的。之前我也是一直采用这种方式,然后通过CSS样式调整到与其他FineUI控件差不多,但看起来还是很不和谐。最近做一个项目时又采用这种方式,但是真的越看越觉得太丑,所以觉得尝试下看能不能通过ExtJs将My97DatePicker与TextBox结合起来(想法早就有,理论上是绝对可行的,只是之前小弟对ExtJs没什么研究,而且也比较懒,所以才一直没有动手做)。最后通过在网上找了一些ExtJs的方式,终于实现了这以功能:

    第一步当然是引用WdatePicker.js啦{:soso_e113:}
  1. <script src="../My97DatePicker/WdatePicker.js" type="text/javascript"></script>
复制代码
第二步是定义用来存放My97DatePicker控件的文本框,其实与平时使用FineUI的TextBox 没区别
  1. <ext:TextBox ID="TextBox1" Readonly="true" Label="开始时间" runat="server">
  2. </ext:TextBox>
复制代码
第三步是最重要的,在页面</form>下方增加下面这段JS代码就可以实现这个功能了。
  1. <script type="text/javascript">
  2. var TB_DATE = '<%=TextBox1.ClientID %>';

  3. // 页面第一个加载完毕后执行的函数
  4. function onReady() {

  5. //单击文本框时,显示日期控件
  6. var DATE_OBJ = X(TB_DATE);
  7. DATE_OBJ.on('focus', function(e) {
  8. WdatePicker({ dateFmt: 'yyyy-MM-dd HH:mm:ss' })
  9. });
  10. }

  11. // 页面AJAX回发后执行的函数
  12. function onAjaxReady() {

  13. //单击文本框时,显示日期控件
  14. var DATE_OBJ = X(TB_DATE);
  15. DATE_OBJ.on('focus', function(e) {
  16. WdatePicker({ dateFmt: 'yyyy-MM-dd HH:mm:ss' })
  17. });
  18. }

  19. </script>
复制代码
注意:1、必须加上onAjaxReady() 函数,否则在页面刷新(FineUI通常都是Ajax)后日期控件将失效。
              2、之前有发现过有某几个版本的FineUI的DLL不支持ExtJs,使用过程中如果页面报:“Ext未定义”的错误,可以尝试换其他版本的DLL

    以上是小弟在使用FineUI是的一些收获,这个也不是什么技术问题,可能论坛里有其他大神已经实现,甚至做得更好,这里仅分享给那些还没找到更好的方法或者跟我一样懒的水友。

    {:soso_e104:}{:soso_e104:}第一次发分享帖,有写的不好的地方希望各位水友多多包涵。

沙发
发表于 2013-10-16 19:03:27 | 只看该作者
谢谢你的无私分享!
板凳
发表于 2013-10-19 11:29:42 | 只看该作者
感谢 分享 ,先收藏了~~~~~~~~~~
地板
发表于 2013-11-5 09:51:33 | 只看该作者
学习了,谢谢分享
6#
发表于 2014-1-2 14:10:39 | 只看该作者
我在4.0版本,chrome中页面会死,在IE9正常使用。不知你是否有碰到此问题。
7#
 楼主| 发表于 2014-1-2 15:11:09 | 只看该作者
Hanson 发表于 2014-1-2 14:10
我在4.0版本,chrome中页面会死,在IE9正常使用。不知你是否有碰到此问题。

下午找时间测试下,4.0的没试过
8#
 楼主| 发表于 2014-1-2 15:32:18 | 只看该作者
Hanson 发表于 2014-1-2 14:10
我在4.0版本,chrome中页面会死,在IE9正常使用。不知你是否有碰到此问题。

刚刚测试了一下,4.0版本IE8、CHROME都不行,点击后没有加载日期框,但是页面不会死
9#
发表于 2014-1-18 12:07:00 | 只看该作者
不错..应该三石兄直接加上一个这样的控件在fineui。
10#
发表于 2014-1-20 12:30:01 | 只看该作者
我现在就去试试! 楼主很棒!赞歌
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-23 11:35 , Processed in 0.050177 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表