FineUI 官方论坛

标题: 【分享】My97DatePicker与FineUI控件结合 [打印本页]

作者: Panda    时间: 2013-10-12 11:50
标题: 【分享】My97DatePicker与FineUI控件结合
    首先非常感谢三石大神为我们提供这么强大的控件。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:}第一次发分享帖,有写的不好的地方希望各位水友多多包涵。


作者: erp8@live.cn    时间: 2013-10-16 19:03
谢谢你的无私分享!
作者: Min    时间: 2013-10-19 11:29
感谢 分享 ,先收藏了~~~~~~~~~~
作者: kkleetom    时间: 2013-11-5 09:51
学习了,谢谢分享
作者: birdover    时间: 2013-11-14 15:38
本帖最后由 birdover 于 2013-11-14 17:03 编辑

确实可行

作者: Hanson    时间: 2014-1-2 14:10
我在4.0版本,chrome中页面会死,在IE9正常使用。不知你是否有碰到此问题。
作者: Panda    时间: 2014-1-2 15:11
Hanson 发表于 2014-1-2 14:10
我在4.0版本,chrome中页面会死,在IE9正常使用。不知你是否有碰到此问题。

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

刚刚测试了一下,4.0版本IE8、CHROME都不行,点击后没有加载日期框,但是页面不会死
作者: 最初的理想    时间: 2014-1-18 12:07
不错..应该三石兄直接加上一个这样的控件在fineui。
作者: wd844125365    时间: 2014-1-20 12:30
我现在就去试试! 楼主很棒!赞歌
作者: liaofeifan    时间: 2014-3-23 10:58
4.05中页面确实会死掉,目前原因不清楚。
作者: Panda    时间: 2014-3-23 22:44
liaofeifan 发表于 2014-3-23 10:58
4.05中页面确实会死掉,目前原因不清楚。

最近在新项目中我使用4.05的DLL,并试图解决绑定My97DatePicker时页面死掉的问题,但是最终还是没能找到解决方法。

目前能确定的是,在    WdatePicker({ dateFmt: 'yyyy-MM-dd HH:mm:ss' });这一步绑定操作时出错,注释掉后页面正常加载。不知是否EXTJS跟JQUERY冲突还是。

因为项目比较急,所以没有进一步再寻找原因。
作者: liaofeifan    时间: 2014-3-24 09:27
Panda 发表于 2014-3-23 22:44
最近在新项目中我使用4.05的DLL,并试图解决绑定My97DatePicker时页面死掉的问题,但是最终还是没能找到 ...

的确是这个原因,但在IE中没有问题。主要是在firefox、360、chrome中页面死掉。请积极寻找解决办法。
作者: sanshi    时间: 2014-4-19 16:24
下个版本会提供FineUI与My97整合的例子:
+增加FineUI与My97DatePicker整合的示例(aspnet/my97.aspx)。
                -自定义皮肤neptune,以便和FineUIv4.x的Neptune主题兼容。



[attach]5110[/attach]



作者: Panda    时间: 2014-5-6 11:10
sanshi 发表于 2014-4-19 16:24
下个版本会提供FineUI与My97整合的例子:

太好了
作者: binbin    时间: 2014-5-6 16:34
三石威武!哈哈




欢迎光临 FineUI 官方论坛 (https://www.fineui.com/bbs/) Powered by Discuz! X3.4