海水正藍

          面朝大海,春暖花開
          posts - 145, comments - 29, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          一般我們的前臺代碼Ext.grid.ColumnModel里會這樣寫,以便顯示日期格式:

          //////////////////////////////////////////////////////////////

          Js代碼
          ....  
          {   header:"birthday",

              dataIndex:"birthday"

              ....

              renderer:new Ext.util.Format.dateRenderer("Y-m-d"),  
              .... 

          }

          ....

          //////////////////////////////////////////////////////////////

           

            如果你前臺這樣寫的話,那恭喜你,你的顯示日期那列將不再正確顯示時間,

          而是顯示為"NaN-NaN-NaN",是吧?

            呵呵,問我怎么知道的?因為最開始我也是這么錯的。

            為什么會是錯的呢?

            讓我們來看看Ext.format.dateRenderer的源代碼(開源的東西就是好),

          它的源代碼是這樣的:

           

          Js代碼

          //////////////////////////////////////////////////////////////
          dateRenderer : function(format) {   
              return function(v) {   
                  return Ext.util.Format.date(v, format);、   
              }  

          ////////////////////////////////////////////////////////////// 


             可以看出,我們傳會來的值,被當(dāng)做日期又被格式化了一次,我們傳回來的是日期嗎?

          以前是,經(jīng)過昨天后臺代碼的修改,我們傳回來的僅僅是個字符串了,至于為什么要這么改,

          請看昨天寫的“Extjs日期格式問題(一) ”,那咋辦?有的朋友應(yīng)該已經(jīng)想到了,既然是字符串,

          那就直接顯示唄,不用renderer了,于是前臺代碼Ext.grid.ColumnModel里就變成了:

           

          Js代碼

          ////////////////////////////////////////////////////////////// 
          ....  
          {header:"birthday",dataIndex:"birthday".......),  
          .... 
          //////////////////////////////////////////////////////////////

           

            可以負(fù)責(zé)任的告訴你,這樣寫,絕對可以正確顯示了,這樣是不是感覺更簡單了呢?

           

            但是,基于我項目里的要求,這個問題并沒有解決完,因為在這里不是一個簡單的gridpanel,

          而是一個editgridpanel,所以還得定義一個editor,于是有了下面這樣一段代碼:

           

          Js代碼

          //////////////////////////////////////////////////////////////
          ....  
          {header:"birthday",dataIndex:"birthday".......,   
                editor:new Ext.grid.GridEditor(new Ext.form.DateField({format:"Y-m-d"})),  
          ..... 

          //////////////////////////////////////////////////////////////

           
            加了這個DateField控件后,每次可以正常的選擇日期,但是選擇完日期后,

          grid里顯示的格式就又不正確了,這次顯示的內(nèi)容成了: "Wed Mar 04 1970......",

          這樣的格式一看就是個日期,這樣顯示的原因當(dāng)然是因為我們沒有寫renderer進行格式化處理的緣故。。。

          說到這里,有人應(yīng)該已經(jīng)想到解決辦法了,另外有些人可能就抓狂了,這renderer加了不能正常顯示,

          不加也不能正常顯示,這很矛盾啊。。

            問題往往到了最矛盾的時候,也是到了解決的時候,現(xiàn)在我把解決代碼貼出來,大家一看就明白了。

          多的不說,看代碼:

           

          Js代碼
          //////////////////////////////////////////////////////////////

          renderer:function(value){   
              if(value instanceof Date){   
                  return new Date(value).format("Y-m-d");   
              }else{   
                  return value;   
              }  
          }  
          //////////////////////////////////////////////////////////////

            簡單吧?自己寫renderer就是了。

          原文出自:http://ks2144634.blog.163.com/blog/static/133585503201081544950656/

          posted @ 2012-12-30 13:06 小胡子 閱讀(2305) | 評論 (0)編輯 收藏

          錯誤”ora-04031 無法分配XXX字節(jié)的共享內(nèi)存(XXX)”的解決辦法:

          oracle 9i:
          sys用戶以sysdba身份登錄
          先查看當(dāng)前shared_pool_size值
          sql>show parameter shared_pool_size;
          然后
          sql>alter system set shared_pool_size=’比原先值適當(dāng)增加’ scope=spfile;
          然后
          sql>shutdown immediate
          sql>startup

          oracle 10g:
          oracle 10g shared_pool_size默認(rèn)值為0,也就是系統(tǒng)自動管理shared pool內(nèi)存,這時可以適當(dāng)增加shared_pool_reserved_size的值,仍然讓系統(tǒng)自動管理這部分內(nèi)存

          sql>alter system set shared_pool_reserved_size=’比原先值適當(dāng)增加’ scope=spfile;
          sql>shutdown immediate
          sql>startup

          原文出自:http://openwares.net/database/cant_alloc_share_memory.html

          posted @ 2012-12-29 22:35 小胡子 閱讀(3613) | 評論 (0)編輯 收藏

          對依賴注入( http://www.oschina.net/code/snippet_871522_15682) 的進一步加強.
          作為基本功能的注冊,使用語法是:registration.register<Interface,Implementation>().
          可以到了實際的項目中,要注冊的接口和類可能不止一個兩個,會成百上千。無論是用C#代碼來注冊,還是用XML文件來配置,都是開發(fā)者的噩夢。

          這里,讓我們來個思維的反轉(zhuǎn): 變集中配置為分散聲明。
          1 為要注冊的類,加入RegisterInContainer的聲明
          2 在系統(tǒng)啟動的時候,掃描所有的類,對有RegisterInContainer的類,找到它所有實現(xiàn)的接口,把這些接口和該類綁定注冊。

          用于裝飾要注入類的Attribute.


           1 using System;
           2 using System.Linq;
           3 using Skight.eLiteWeb.Domain.BasicExtensions;
           4 
           5 namespace Skight.eLiteWeb.Domain.Containers
           6 {
           7     [AttributeUsage(AttributeTargets.Class)]
           8     public class RegisterInContainerAttribute : Attribute
           9     {
          10         public RegisterInContainerAttribute(LifeCycle life_cycle) {
          11             this.life_cycle = life_cycle;
          12         }
          13 
          14         public LifeCycle life_cycle { getset; }
          15         public Type type_to_register_in_container { getset; }
          16 
          17         public void register_using(Registration registration) {
          18             DiscreteItemResolver resolver = new TypeResolver(type_to_register_in_container);
          19             if (life_cycle == LifeCycle.singleton) resolver = new SingletonResolver(resolver);
          20             registration.register(resolver,type_to_register_in_container.all_interface().ToArray());
          21         }
          22     }
          23 }

          注入聲明Attribute參數(shù),指定是否單件方式生成注冊類。


          1 namespace Skight.eLiteWeb.Domain.Containers
          2 {
          3     public enum LifeCycle
          4     {
          5         single_call,
          6         singleton
          7     }
          8 }

          注冊聲明Attribute的使用示例


           1 //調(diào)用Container.get_an<FrontController>()將會得到FrontControllerImpl的對象
           2 
           3 using Skight.eLiteWeb.Domain.Containers;
           4 
           5 namespace Skight.eLiteWeb.Presentation.Web.FrontControllers
           6 {
           7     [RegisterInContainer(LifeCycle.single_call)]
           8     public class FrontControllerImpl : FrontControllers.FrontController
           9     {
          10         private CommandResolver command_resolver;
          11 
          12         public FrontControllerImpl(CommandResolver commandResolver)
          13         {
          14             command_resolver = commandResolver;
          15         }
          16 
          17         public void process(WebRequest request)
          18         {
          19             command_resolver.get_command_to_process(request).process(request);
          20         }
          21     }
          22 }

          Registration添加一個方法:反過來,為一個解析器(實現(xiàn)類)注冊多個接口。


          1 void register(DiscreteItemResolver resolver, params Type[] contracts);
          2 

          掃描注冊機,在系統(tǒng)啟動時調(diào)用一次。


           1 using System.Collections.Generic;
           2 using System.Reflection;
           3 using Skight.eLiteWeb.Domain.BasicExtensions;
           4 using Skight.eLiteWeb.Domain.Containers;
           5 
           6 namespace Skight.eLiteWeb.Application.Startup
           7 {
           8     public class RegistrationScanner:StartupCommand
           9     {
          10         private readonly Registration registration;
          11         private readonly IEnumerable<Assembly> assemblies;
          12 
          13         public RegistrationScanner(Registration registration, params Assembly[] assemblies)
          14         {
          15             this.registration = registration;
          16             this.assemblies = assemblies;
          17         }
          18 
          19         public void run()
          20         {
          21             assemblies
          22                 .each(assembly =>
          23                       assembly.GetTypes()
          24                               .each(type =>
          25                                     type.run_againste_attribute<RegisterInContainerAttribute>(
          26                                         attribute =>
          27                                             {
          28                                                 attribute.type_to_register_in_container = type;
          29                                                 attribute.register_using(registration);
          30                                             })));
          31         }
          32     }
          33 }

          系統(tǒng)啟動:創(chuàng)建注冊類,然后傳入必要的Assembly,調(diào)用注冊機注冊所有加了Attribute的類。


           1 using System;
           2 using System.Collections.Generic;
           3 using System.Reflection;
           4 using Skight.eLiteWeb.Domain.Containers;
           5 using Skight.eLiteWeb.Presentation.Web.FrontControllers;
           6 
           7 namespace Skight.eLiteWeb.Application.Startup
           8 {
           9     public class ApplicationStartup
          10     {
          11         public void run()
          12         {
          13             var registration = create_registration();
          14             new RegistrationScanner(registration,
          15                                                Assembly.GetAssembly(typeof (Container)),
          16                                                Assembly.GetAssembly(typeof (FrontController)),
          17                                                Assembly.GetAssembly(typeof (StartupCommand)))
          18                                                .run();
          19 
          20         }
          21 
          22         private Registration create_registration()
          23         {
          24             IDictionary<Type, DiscreteItemResolver> item_resolvers = new Dictionary<Type, DiscreteItemResolver>();
          25             Container.initialize_with(new ResolverImpl(item_resolvers));
          26             return new RegistrationImpl(item_resolvers);
          27         }
          28     }
          29 }

          Global.asax系統(tǒng)入口,把所有的代碼串起來。


           1 <%@ Application Language="C#" %>
           2 <%@ Import Namespace="Skight.eLiteWeb.Application.Startup" %>
           3 <script  RunAt="server">
           4 
           5     private void Application_Start(object sender, EventArgs e)
           6     {
           7        new ApplicationStartup().run();
           8     }
           9 
          10 </script>

          原文出自:
          http://www.oschina.net/code/snippet_871522_16735

          posted @ 2012-12-25 15:24 小胡子 閱讀(372) | 評論 (0)編輯 收藏

               摘要: http://www.umlchina.com/Tools/Newindex1.htmUML相關(guān)工具一覽(截止2012年10月)  整理 本文的PDF版本在此下載>> 以下總結(jié)了全世界的各種UML相關(guān)工具,按工具名稱字母排序。     工具(最新版本) 廠商&地址 版權(quán) ...  閱讀全文

          posted @ 2012-12-25 15:16 小胡子 閱讀(2638) | 評論 (0)編輯 收藏

          1.活動圖、用例圖、類圖
          http://yuml.me/diagram/scruffy/class/draw

          2.序列圖
          http://www.websequencediagrams.com/



          3.序列圖、協(xié)作圖
          http://www.diagrammr.com/

          posted @ 2012-12-25 15:15 小胡子 閱讀(2876) | 評論 (1)編輯 收藏

               摘要: Container注入框架的進入點Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 namespace Skight.LightWeb.Domain 2 { 3  &n...  閱讀全文

          posted @ 2012-12-25 13:33 小胡子 閱讀(244) | 評論 (0)編輯 收藏

          在這里我們總結(jié)了Oracle臨時表的集中用法,臨時表創(chuàng)建之后基本不占用表空間,如果你沒有指定臨時表存放的表空的時候,你插入到臨時表的數(shù)據(jù)是存在系統(tǒng)的臨時表空間中。

          Oracle臨時表可以說是提高數(shù)據(jù)庫處理性能的好方法,在沒有必要存儲時,只存儲在Oracle臨時表空間中。希望本文能對大家有所幫助。

          1 、前言

          目前所有使用 Oracle 作為數(shù)據(jù)庫支撐平臺的應(yīng)用,大部分?jǐn)?shù)據(jù)量比較龐大的系統(tǒng),即表的數(shù)據(jù)量一般情況下都是在百萬級以上的數(shù)據(jù)量。

          當(dāng)然在 Oracle 中創(chuàng)建分區(qū)是一種不錯的選擇,但是當(dāng)你發(fā)現(xiàn)你的應(yīng)用有多張表關(guān)聯(lián)的時候,并且這些表大部分都是比較龐大,而你關(guān)聯(lián)的時候發(fā)現(xiàn)其中的某一張或者某幾張表關(guān)聯(lián) 之后得到的結(jié)果集非常小并且查詢得到這個結(jié)果集的速度非常快,那么這個時候我考慮在 Oracle 中創(chuàng)建“臨時表”。

          我對臨時表的理解:在 Oracle 中創(chuàng)建一張表,這個表不用于其他的什么功能,主要用于自己的軟件系統(tǒng)一些特有功能才用的,而當(dāng)你用完之后表中的數(shù)據(jù)就沒用了。 Oracle 的臨時表創(chuàng)建之后基本不占用表空間,如果你沒有指定臨時表(包括臨時表的索引)存放的表空的時候,你插入到臨時表的數(shù)據(jù)是存放在 ORACLE 系統(tǒng)的臨時表空間中( TEMP )。

          2 、臨時表的創(chuàng)建

          創(chuàng)建Oracle 臨時表,可以有兩種類型的臨時表:

          會話級的臨時表

          事務(wù)級的臨時表 。

          1) 會話級的臨時表因為這這個臨時表中的數(shù)據(jù)和你的當(dāng)前會話有關(guān)系,當(dāng)你當(dāng)前SESSION 不退出的情況下,臨時表中的數(shù)據(jù)就還存在,而當(dāng)你退出當(dāng)前SESSION 的時候,臨時表中的數(shù)據(jù)就全部沒有了,當(dāng)然這個時候你如果以另外一個SESSION 登陸的時候是看不到另外一個SESSION 中插入到臨時表中的數(shù)據(jù)的。即兩個不同的SESSION 所插入的數(shù)據(jù)是互不相干的。當(dāng)某一個SESSION 退出之后臨時表中的數(shù)據(jù)就被截斷(truncate table ,即數(shù)據(jù)清空)了。會話級的臨時表創(chuàng)建方法:


          1     Create Global Temporary Table Table_Name  
          2     (Col1 Type1,Col2 Type2On Commit Preserve Rows ;

          舉例:

          1     create global temporary table Student  
          2     (Stu_id Number(5),  
          3     Class_id Number(5),  
          4     Stu_Name Varchar2(8),  
          5     Stu_Memo varchar2(200)) on Commit Preserve Rows ;

          2) 事務(wù)級臨時表是指該臨時表與事務(wù)相關(guān),當(dāng)進行事務(wù)提交或者事務(wù)回滾的時候,臨時表中的數(shù)據(jù)將自行被截斷,其他的內(nèi)容和會話級的臨時表的一致(包括退出SESSION 的時候,事務(wù)級的臨時表也會被自動截斷)。事務(wù)級臨時表的創(chuàng)建方法:

          1     Create Global Temporary Table Table_Name  
          2     (Col1 Type1,Col2 Type2On Commit Delete Rows ;

          舉例:

          1     create global temporary table Classes  
          2     (Class_id Number(5),  
          3     Class_Name Varchar2(8),  
          4     Class_Memo varchar2(200)) on Commit delete Rows ;

          3) 兩中類型臨時表的區(qū)別

          會話級臨時表采用 on commit preserve rows ;而事務(wù)級則采用 on commit delete rows ;用法上,會話級別只有當(dāng)會話結(jié)束臨時表中的數(shù)據(jù)才會被截斷,而且事務(wù)級臨時表則不管是 commit 、 rollback 或者是會話結(jié)束,臨時表中的數(shù)據(jù)都將被截斷

          4 )什么時候使用臨時表

          1 )、當(dāng)某一個 SQL 語句關(guān)聯(lián)的表在 2 張及以上,并且和一些小表關(guān)聯(lián)。可以采用將大表進行分拆并且得到比較小的結(jié)果集合存放在臨時表中

          2 )、程序執(zhí)行過程中可能需要存放一些臨時的數(shù)據(jù),這些數(shù)據(jù)在整個程序的會話過程中都需要用的等等。

          3 . 例子:略

          4 .臨時表的不足之處

          1 )不支持 lob 對象,這也許是設(shè)計者基于運行效率的考慮,但實際應(yīng)用中確實需要此功能時就無法使用臨時表了。

          2 )不支持主外鍵關(guān)系

          所以,由于以上原因,我們可以自己創(chuàng)建臨時表,以彌補 oracle 臨時表的不足之處

          上面的都是本人經(jīng)過測試的,但下面是在網(wǎng)上搜索到的方法,本人具體沒有測試過,不過覺得可行性很強,有時間測試下

          創(chuàng)建方法:

          1 、以常規(guī)表的形式創(chuàng)建臨時數(shù)據(jù)表的表結(jié)構(gòu),但要在每一個表的主鍵中加入一個 SessionID 列以區(qū)分不同的會話。(可以有 lob 列和主外鍵)

          2 、寫一個用戶注銷觸發(fā)器,在用戶結(jié)束會話的時候刪除本次會話所插入的所有記錄 (SessionID 等于本次會話 ID 的記錄 ) 。

          3 、程序?qū)懭霐?shù)據(jù)時,要順便將當(dāng)前的會話 ID(SessionID) 寫入表中。

          4 、程序讀取數(shù)據(jù)時,只讀取與當(dāng)前會話 ID 相同的記錄即可。

          功能增強的擴展設(shè)計:

          1 、可以在數(shù)據(jù)表上建立一個視圖,視圖對記錄的篩選條件就是當(dāng)前會話的SessionID 。

          2 、數(shù)據(jù)表中的SessionID 列可以通過Trigger 實現(xiàn),以實現(xiàn)對應(yīng)用層的透明性。

          3 、高級用戶可以訪問全局?jǐn)?shù)據(jù),以實現(xiàn)更加復(fù)雜的功能。

          擴展臨時表的優(yōu)點:

          1 、實現(xiàn)了與Oracle 的基于會話的臨時表相同的功能。

          2 、支持SDO_GEOMETRY 等lob 數(shù)據(jù)類型。

          3 、支持表間的主外鍵連接,且主外鍵連接也是基于會話的。

          4 、高級用戶可以訪問全局?jǐn)?shù)據(jù),以實現(xiàn)更加復(fù)雜的功能


          原文出自:
          http://database.51cto.com/art/201001/180851.htm






          posted @ 2012-12-24 10:08 小胡子 閱讀(265) | 評論 (0)編輯 收藏

          Heritrix資源

          網(wǎng)絡(luò)上的Heritrix中文資源比較少,整理一下:

           

          中文:

          l         《開發(fā)自己的搜索引擎 Lucene 2.0 + Heritrix》作者邱哲&符滔滔的BLOG

          http://lucenebook.spaces.live.com/

           

          l         《開發(fā)自己的搜索引擎 Lucene 2.0 + Heriterx第十章擴展Heritrix試讀章節(jié)

          (可以考慮開發(fā)的,比較有用)

          http://book.csdn.net/bookfiles/312/10031212848.shtml

           

          l         Heritrix筆記

          http://wiki.hoodong.com/wiki/jRwNBCFgWA1dYB0NC

           

          l         Heritrix crawler vs Nutch crawler

          http://www.dbanotes.net/web/heritrix_crawler_vs_nutch_crawler.html

           

          l         天下維客-爬蟲程序

          http://www.allwiki.com/wiki/Heritrix#Heritrix.E7.9A.84.E5.B1.80.E9.99.90

           

          英文:

          l         Heritrix主頁

          http://crawler.archive.org/

           

          l         HTMLParser主頁

          http://htmlparser.sourceforge.net/

           
           

          Heritrix綁定主機IP

          關(guān)鍵字:Heritrix 127.0.0.1 IP 主機

           

          Heritrix默認(rèn)綁定的IP127.0.0.1

          org.archive.crawler.Heritrix

           

          final private static Collection<String> LOCALHOST_ONLY =

               Collections.unmodifiableList(Arrays.asList(new String[] { "127.0.0.1" }));

          private static Collection<String> guiHosts = LOCALHOST_ONLY;

           

          protected static String doCmdLineArgs(final String [] args)

          throws Exception {

              // Now look at options passed.

                  for (int i = 0; i < options.length; i++) {

                      switch(options[i].getId()) {

                          …

                          case 'b':

                              Heritrix.guiHosts = parseHosts(options[i].getValue());

                              break;

                          …

                          default:

                              assert false: options[i].getId();

                      }

                  }

          }

           

          首先定義了默認(rèn)IP127.0.0.1,然后賦給guiHost主機變量。當(dāng)指定-b--bind參數(shù)時,才會把指定的IP賦給主機變量。

          另外,中間還有一步參數(shù)處理,對于--xxxx參數(shù)會轉(zhuǎn)為-x的形式統(tǒng)一處理,所以--bind-b有一樣的效果。

           

          Heritrix啟動參數(shù)

          關(guān)鍵字:Heritrix 啟動 參數(shù) bind admin properties

           

          Heritrix的啟動參數(shù),除了--bind外,都可以在heritrix.properties設(shè)置,而不用每次都在命令行中輸入。

          如常用的--port, --admin等。

           

          heritrix.cmdline.admin = admin:admin

          heritrix.cmdline.port = 8080

          heritrix.cmdline.run = false

          heritrix.cmdline.nowui = false

          heritrix.cmdline.order =

          heritrix.cmdline.jmxserver = false

          heritrix.cmdline.jmxserver.port = 8081

           

          關(guān)于HeritrixExtractor中文亂碼

          關(guān)鍵字:Heritrix 中文 亂碼 GB2312 Extractor

           

          繼承從org.archive.crawler.extractor.Extractor的子類,在extract方法中可以從參數(shù)CrawlURI中取出要解析的內(nèi)容。

           

          curi.getHttpRecorder().getReplayCharSequence.toString()

           

          有中文時,不做處理會輸出亂碼。可以在取到的HttpRecorder后設(shè)置編碼:

           

          HttpRecorder hr = curi.getHttpRecorder();

          if ( hr == null ) {

              throw new IOException( "Why is recorder null here?" );

          }

          hr.setCharacterEncoding( "gb2312" );

          cs = hr.getReplayCharSequence();

          System.out.println( cs.toString() );

           

          原文出自:

          http://blog.chinaunix.net/uid-8464637-id-2461166.html

          posted @ 2012-12-21 12:34 小胡子 閱讀(571) | 評論 (0)編輯 收藏

          原文出自:

          http://blog.csdn.net/jbxiaozi/article/details/7351768

           


          1.右鍵項目-》屬性-》java bulid path-》jre System Library-》access rules-》resolution選擇accessible,下面填上** 點擊確定即可!!!

          2.

          在MyEclipse中編寫Java代碼時,用到了BASE64Decoder,import sun.misc.BASE64Decoder;可是Eclipse提示:
          Access restriction: The type BASE64Decoder is not accessible due to restriction on required library C:\Program
          files\java\jre6\lib\rt.jar
          Access restriction : The constructor BASE64Decoder() is not accessible due to restriction on required library C:\Program files\java\jre6\lib\rt.jar

          解決方案1(推薦):

          只需要在project build path中先移除JRE System Library,再添加庫JRE System Library,重新編譯后就一切正常了。

          解決方案2:

          Windows -> Preferences -> Java -> Compiler -> Errors/Warnings ->
          Deprecated and trstricted API 
          -> Forbidden reference (access rules): -> change to warning

          posted @ 2012-12-18 09:28 小胡子 閱讀(11577) | 評論 (3)編輯 收藏

          項目中有時需要用到起始日期和結(jié)束日期,要做到起始日期必須小于結(jié)束日期。在extjs中已經(jīng)有現(xiàn)成的函數(shù),摘錄如下:

           1 Ext.apply(Ext.form.VTypes, {
           2             daterange : function(val, field) {
           3                 var date = field.parseDate(val);
           4                 if (!date) {
           5                     return;
           6                 }
           7                 if (field.startDateField
           8                         && (!this.dateRangeMax || (date.getTime() != this.dateRangeMax
           9                                 .getTime()))) {
          10                     var start = Ext.getCmp(field.startDateField);
          11                     start.setMaxValue(date);
          12                     start.validate();
          13                     this.dateRangeMax = date;
          14                 } else if (field.endDateField
          15                         && (!this.dateRangeMin || (date.getTime() != this.dateRangeMin
          16                                 .getTime()))) {
          17                     var end = Ext.getCmp(field.endDateField);
          18                     end.setMinValue(date);
          19                     end.validate();
          20                     this.dateRangeMin = date;
          21                 }
          22                 /*
          23                  * Always return true since we're only using this vtype to set
          24                  * the min/max allowed values (these are tested for after the
          25                  * vtype test)
          26                  */
          27                 return true;
          28             }
          29         });

          然后分別定義起始日期和結(jié)束日期控件:

           1 var startDate = new Ext.form.DateField({
           2                 fieldLabel : '開始日期',
           3                 emptyText : '請選擇',
           4                 disabledDays : [125],//將星期一,二,五禁止.數(shù)值為0-6,0為星期日,6為星期六
           5                 labelWidth : 100,
           6                 readOnly : true,
           7                 allowBlank : false,
           8                 format : 'Y-m-d',//日期格式
           9                 name : 'startdt',
          10                 id : 'startdt',
          11                 vtype : 'daterange',//daterange類型為上代碼定義的類型
          12                 endDateField : 'endDate'//必須跟endDate的id名相同
          13             })
          14     var endDate = new Ext.form.DateField({
          15                 fieldLabel : '結(jié)束日期',
          16                 emptyText : '請選擇',
          17                 disabledDays : [125],//將星期一,二,五禁止.數(shù)值為0-6,0為星期日,6為星期六
          18                 readOnly : true,
          19                 allowBlank : false,
          20                 format : 'Y-m-d',//日期格式
          21                 name : 'enddt',
          22                 id : 'endDate',
          23                 vtype : 'daterange',//daterange類型為上代碼定義的類型
          24                 startDateField : 'startdt'//必須跟startDate的id名相同
          25             })

          效果如下兩圖:

          1

           

                                         圖1.選擇開始日期

           

           

          2

           

                                            圖2.選擇結(jié)束日期

          原文出自:
          http://blog.csdn.net/security08/article/details/5070749







          posted @ 2012-12-16 22:31 小胡子 閱讀(621) | 評論 (0)編輯 收藏

          僅列出標(biāo)題
          共15頁: First 上一頁 2 3 4 5 6 7 8 9 10 下一頁 Last 
          主站蜘蛛池模板: 普兰店市| 台东市| 麟游县| 丹东市| 屏山县| 鄱阳县| 大化| 扶风县| 溧阳市| 古浪县| 桂林市| 门源| 太湖县| 浠水县| 石家庄市| 郸城县| 建水县| 威信县| 宁河县| 张家川| 张北县| 中西区| 苍溪县| 专栏| 卓尼县| 游戏| 顺义区| 体育| 息烽县| 咸宁市| 永定县| 朔州市| 高州市| 微博| 湘阴县| 酉阳| 莱州市| 平泉县| 吉林省| 葫芦岛市| 江北区|