close

延續上回利用Calendar控制項在頁面提供日期選擇的功能:
http://jerry5217.pixnet.net/blog/post/226747753

我這次想要在提供日曆選擇的時候,就讓使用者知道那一天有資料可以讀取,
概念如下:

有資料內容可供查詢的日期顯示為紅色,若使用者選擇非紅字的日期則回到原始狀態請使用者重新選擇,利用上回開啟資料庫查詢資料表的方式:
http://jerry5217.pixnet.net/blog/post/225960490

這次我們只需要查詢日期欄位就好了,所以SQL語法如下:
select 訪談日期 from Interview_Table

查詢結果:

由於我查詢的目的只是想要知道那些日期是可提供資料,所以我希望查詢結果的相同日期只要出現一次就好,所以SQL語法要多一個指令DISTINCT:
select DISTINCT 訪談日期 from Interview_Table

這樣一來查詢結果就會變成:

這次一樣在頁面有三個控制項物件:
Label:用於顯示所選擇的日期,取名:InquireDate
Button:用於呼叫出日曆供使用者選擇,取名:InquireDateBtn
Canlendar:提供使用者選擇的日曆,取名:InquireDateCalendar
我這次在前端頁面多加了一個隱藏的Label控制項,
利用它來暫存資料用取名為:Hidden_Data_IT_Date,所以要先將Hidden_Data_IT_Date的Visible屬性設定為"false"

※Canlendar控制項:
1)我們先將原本預設"今天"日期的色彩設定移除,如下圖藍色反白部分整行刪除:


2)然後將欲提示的日期顏色設定為黃底紅字:
<SelectedDayStyle BackColor="#FFFF00" ForeColor="#FF0000" />

3)並將Visible屬性設定為"false",先隱藏起來等待[選擇日期]按鈕(InquireDateBtn)按下後再將它啟動顯示。

※按下[選擇日期]按鈕(InquireDateBtn)後:
1)開啟Canlendar控制項(InquireDateCalendar)的顯示屬性,
    
InquireDateCalendar.Visible = true;
2)清空日曆中已選擇的內容,
   
InquireDateCalendar.SelectedDates.Clear();
3)以紅字提示有資料內容的日期
    InquireDate.ForeColor = System.Drawing.Color.Red;
    InquireDate.Text = "紅字代表有訪談紀錄";

4)進行資料查詢,使用While迴圈重新將日期依序設定在Canlendar控制項(InquireDateCalendar)的SelectedDates屬性中,並暫存在Hidden_Data_IT_Date中

完整程式碼如下:


上述程式碼簡單的說,就是清空原本Canlendar控制項(InquireDateCalendar)的SelectedDates屬性內容,再將重新查詢資料庫後的結果寫入

※按下日曆上的某一天日期後:
1)關閉Canlendar控制項的顯示屬性
2)依據隱藏的Hidden_Data_IT_Date.Text內容來判斷,所選擇的日期是否屬於有資料內容的日期

完整程式碼如下:

如果是屬於有資料內容的日期則用黑色顯示,
否則用藍色顯示說明文字請使用者重新選擇。

 

所有筆記:程式開發隨手記

arrow
arrow

    王振權 發表在 痞客邦 留言(0) 人氣()