Calendar 依喜好日期變色
其實這個問題不難,只是當下測試時候都會用
Calendar1.SelectedDayStyle.BackColor = ColorTranslator.FromHtml("#1111FF");
沒錯會變,但是每個重要的時間點都變成一樣的顏色了
昨日被問這個問題後,也是當下直覺式的...只接下那行指令
跑出來後去看html轉譯過的語法變成Table 並給予全部套用一樣的CSS樣式
那也就是可以在CSS或是Table形成前下手........就趕緊去看事件屬性找
挑了Calendar1_DayRender...運作原理就是抓取行事曆呈現時的日期後慢慢的填入
他所轉好的Table內....也就是說他會跑42次去塞值......
此時就可以獨立對該Table 內的Cell去做變色動做了....那廢話說完直接看程式碼吧@@
頁前
<div>
<asp:Calendar ID="Calendar1" runat="server" ondayrender="Calendar1_DayRender"
onselectionchanged="Calendar1_SelectionChanged"></asp:Calendar>
</div>
頁後
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
public partial class calender_test : System.Web.UI.Page
{
int i = 0;
List<string> date_temp = new List<string>();
List<string> flag = new List<string>();
protected void Page_Load(object sender, EventArgs e)
{
SelectedDatesCollection theDates = Calendar1.SelectedDates;
theDates.Clear(); //清空
theDates.Add(new DateTime(2011, 5, 1));
theDates.Add(new DateTime(2011, 5, 31));
date_temp.Add("2011/5/1");
date_temp.Add("2011/5/31");
flag.Add("0");
flag.Add("1");
}
protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
}
protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
string Calendar1_atuo_date = e.Day.Date.ToShortDateString();
for (int g = 0; g < flag.Count(); g++)
{
if (date_temp[g].ToString() == Calendar1_atuo_date)
{
if (flag[g] == "0")
{
e.Cell.BackColor = Color.Pink;
}
else
{
e.Cell.BackColor = Color.YellowGreen;
}
}
}
}
}
檔案下載 NET 2.0版本
檔案下載 NET 4.0版本
大家一起加入blogads 賺零用錢!!