前言
有A、B兩個網頁,A網頁按下日期選擇按鈕後,會跳出B網頁,提供使用者選擇日期後在將選擇的日期(透過日曆控制項的SelectionChanged事件裡)帶回A網頁欄位中。在測試中發現有一點很特別的,假設A網頁帶給B網頁的日期與B網頁日曆選擇日期是同一天時(就是A網頁日期是2011/6/12,B網頁日曆控制項預設日也是2011/6/12,但B網頁日曆選擇2011/6/12將不會把2011/6/12值回傳給A網頁),檢查後發現,Calendar控件會觸發PostBack事件,但選擇同一天就不會觸發SelectionChanged事件。
處理方式
MSDN Calendar事件中有沒有類似OncClick的事件可以使用。為了要不被發現有bug解決此問題,可以透過下列三種方式解決:
將Calendar控制項預設日期設為1900/01/01
首先在Page_Load時,將Calendar控制項選擇的日期設為1900/01/01(改預設日期,設定Calendar可以觸發SelectionChanged事件)
接下來在Day_DayRender事件中,找到A網頁傳來的日期,設定字體顏色跟背景色,讓使用者認為該日期有被選擇(製造使用者錯覺)
完成上述步驟,即使選擇同一天時,也會觸發SelectionChanged事件。請參考下列Code
protected...