iT邦幫忙

DAY 17
1

給學弟的ASP.NET網頁學習經驗系列 第 17

ASP.NET學習經驗#17----Calendar有個日曆也不錯

今天要使用的是Calendar這個需要動動手手才能操作的控制項

因為它不支援DataBing!!

只好找找MSDN的介紹 Calendar控制項中顯示來自資料庫的選取日期

然後自己修改一下自己想要的功能

首先實作一次裡面的範例

並修改

ConfigurationManager.ConnectionStrings["ConnectionString"];

query = @"SELECT HolidayDate FROM Holidays WHERE HolidayDate >= @firstDate AND HolidayDate < @lastDate";

可以在**DayRender**裡面做修改或添加自訂的內容

比如說在每個日期裡面展示資料庫的內容

protected void Calendar2_DayRender(object sender, DayRenderEventArgs e)
{
    DateTime nextDate;
    if (dsHolidays != null)
    {
        foreach (DataRow dr in dsHolidays.Tables[0].Rows)//取出資料集合中的資料
        {
            nextDate = (DateTime)dr["Date"];
            if (nextDate.Date == e.Day.Date)//在相同日期的資料插入對應的資料
            {
                //e.Cell.Controls.Clear();//用來清除cell內原本的控制項
                //Label Day = new Label();
                //Day.Text = e.Day.Date.Day.ToString();
                //e.Cell.Controls.Add(Day);

                HyperLink link = new HyperLink();
                //link.Target = "_blank";
                link.NavigateUrl = "Details.aspx?dataID=" + dr["MessageID"];
                link.Text = dr["Title"].ToString();
                link.ToolTip = dr["Title"].ToString();
                e.Cell.Controls.Add(link);//將這些Link擺入對應得日期cell內
            }
        }
    }
}

這兩天用到 sender與 e 有使用過的經驗解釋起來也會比較有感覺

[*]Object Sender:指的是哪個對象只派出這個事件(肇事者的意思)

[*]EventArgs e:指的是事件觸發時細節資料的提供(事次參數的紀錄)

透過運用這些事件加上寫上自己一些功能才能好好感覺體會一下整個控制項的運作過程

程式碼沒有嚴謹很容易會有Bug,要了解事件的運作方式才能知道如何DeBug!!

.....To Be Continued


上一篇
ASP.NET學習經驗#16----.ashx泛型處理常式與檔案下載
下一篇
ASP.NET學習經驗#18----CustomValidator檢查一下比較好
系列文
給學弟的ASP.NET網頁學習經驗30
0
mis2000lab
iT邦好手 1 級 ‧ 2014-10-03 14:49:25

我剛好有寫過ASP.NET Calendar控制項,搭配自己的DB
做一個簡單的個人行事曆

不嫌棄的話,可以參考看看
http://www.dotblogs.com.tw/mis2000lab/archive/2012/11/06/howto\_calendar\_personal\_schedule.aspx

其實,「關鍵」如同您說的,就是熟悉 DayRender事件就能完成囉 :-)

0
mis2000lab
iT邦好手 1 級 ‧ 2014-10-03 18:56:33

您有無考慮出書?

搭配這三十天的範例,最後配上一兩個整合範例(最好搭配這三十招就能做出來),這樣一定可以變成「簡單入門」又「實用」的好書。

有興趣的話,請聯絡我 mis2000lab (at) yahoo.com.tw :-)

Ben iT邦新手 3 級 ‧ 2014-10-03 20:25:22 檢舉

真的很謝謝前輩Mis2000lab的支持與鼓勵,
我確實是把自己邊實作邊學習的一個小專案做整理,再寫這三十天文章的,
也希望能透過這樣的方式重新審視自己這次學習過程的內容並且精益求精,
學習不足的部分還多虧前面們的提點!!
其他事情不曾多想,能力有限還是先完成鐵人賽
真的很謝謝前輩的關注與提點
是我很大的動力!!!!

0
Alan.Liu
iT邦研究生 1 級 ‧ 2014-10-03 19:46:10

很用心 加油!!

Ben iT邦新手 3 級 ‧ 2014-10-03 20:25:46 檢舉

謝謝!我會加油的!

0
Ben
iT邦新手 3 級 ‧ 2014-10-03 20:31:11

已經踏過一半,我繼續努力加油踏過另一半的!(^_^)

我要留言

立即登入留言