2011-09-02 30 views
0

我試圖禁止在DatePicker GWT組件的所有日期,這裏是我的代碼示例:禁用工作

datePicker.addShowRangeHandler(new ShowRangeHandler<Date>() { 

    public void onShowRange(ShowRangeEvent<Date> event) { 
    System.out.println("First date : " + event.getStart()); 
    System.out.println("Last date : " + event.getEnd()); 

    System.out.println("First date from date picker : " + datePicker.getFirstDate()); 
    System.out.println("Last date from date picker : " + datePicker.getLastDate()); 

     // Disable all the date shown by the Calendar 
    List<Date> dateList = new ArrayList<Date>(); 
    Date currentDate = event.getStart(); 

    while(!currentDate.after(datePicker.getLastDate())) { 
     Date updateDate = CalendarUtil.copyDate(currentDate); 
     dateList.add(updateDate); 
     CalendarUtil.addDaysToDate(currentDate, 1); 
    } 

    for(Date date : dateList) { 
     System.out.println("Date selected : " + date); 
     System.out.println("date visibility : " + datePicker.isDateVisible(date)); 
    } 
    } 


}); 

日期能見度始終是假的,它都跟我所有的日期都不可見,但它應該是真實的,因爲它'在第一個日期和最後一個日期之間,任何人都知道在日曆中禁用日期的方法,所以如果在datePicker上嘗試了方法setTransientOnEnables()任何日期I由於日期不可見,請繼續收到例外情況。

我曾嘗試過實現我自己的DefaultClendarView,但它需要GWT不可用的受保護的類。

+0

我沒有得到你的問題。什麼意思是禁用'DatePicker'中的所有日期?什麼是沒有日期的DatePicker?也許你的意思是一個'DateBox'? – Simson

回答

2

我有類似的問題。我試圖在將來禁用日期。我最終發現開始和結束日期是最終變量。當我嘗試更改開始日期時,出現未定義的行爲(在某些情況下,我的瀏覽器完全凍結)。解決的辦法是複製的開始日期和直接操作,而不是複製的起始日期.. 這是我結束了:

datePicker.addShowRangeHandler(new ShowRangeHandler<java.util.Date>() 
    { 
     @Override 
     public void onShowRange(ShowRangeEvent<Date> event) 
     { 
      Date start = event.getStart(); 
      Date temp = CalendarUtil.copyDate(start); 
      Date end = event.getEnd(); 
      Date today = new Date(); 
      while(temp.before(end)) 
      { 
       if(temp.after(today) && datePicker.isDateVisible(temp)) 
       { 
        datePicker.setTransientEnabledOnDates(false,temp); 
       } 
       CalendarUtil.addDaysToDate(temp, 1); 
      } 
     } 
    }); 

這應該在GWT 2.4工作。早期版本未經測試。