最简单的做是可以如下
1、新建一个aspx页面,把calender控件拉进来。
2、第一步是外观设置,这个根据你的需要,只需对它的相关属性做一些调整即可。可以调整如下图:
属性设置如下:
代码如下 |
复制代码 |
BorderColor="#aaaaaa"
DayHeaderStyle-BackColor="#5e715e"
OtherMonthDayStyle-ForeColor="#cccccc"
DayNameFormat="Full"
runat="server"
TitleStyle-ForeColor="#ffffff"
NextPrevStyle-ForeColor="#ffffff"
CellSpacing="1"
WeekendDayStyle-BackColor="#eeeeee"
DayHeaderStyle-ForeColor="#ffffff"
SelectionMode="None"
TodayDayStyle-BorderColor="#5e715e"
TodayDayStyle-BorderWidth="1"
TodayDayStyle-Font-Bold="true"
TodayDayStyle-ForeColor="#5e715e"
/>
|
第二步是对内部功能的调整,这个工作主要集中在以下事件的处理上。
代码如下 |
复制代码 |
PreRender:当服务器控件将要呈现给其包含的Page对象时发生。
private void Calendar1_PreRender(object sender, System.EventArgs e)
{
Thread threadCurrent = Thread.CurrentThread;
CultureInfo ciNew = (CultureInfo)threadCurrent.CurrentCulture.Clone();
ciNew.DateTimeFormat.DayNames = new string[]{"日","一","二","三","四","五","六"};
ciNew.DateTimeFormat.FirstDayOfWeek = DayOfWeek.Sunday;
threadCurrent.CurrentCulture = ciNew;
}
|
例2
前台:
代码如下 |
复制代码 |
ImageUrl="~/Calender.png" onclick="ImageButton1_Click" />
BorderColor="#FFCC66" BorderWidth="1px" DayNameFormat="Shortest"
Font-Names="Verdana" Font-Size="8pt" ForeColor="#663399" Height="200px"
ShowGridLines="True" Width="220px"
on selectionchanged="Calendar1_SelectionChanged">
ForeColor="#FFFFCC" />
|
后台:
代码如下 |
复制代码 |
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
LayerCC.Style["left"] = "167px";
LayerCC.Visible = !LayerCC.Visible;
}
protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
TextBox1.Text = Calendar1.SelectedDate.ToString("yyyy-MM-dd");
LayerCC.Visible = false;
}
|
总结:
(1 采用一些重构,将一些函数方法分离出去,这一块有一些还没分离完全
(2 日期控件还有VisiblMonthChanged事件来处理日历是否被用户更改了月份, e.NewDate.Year 和e.PreviousDate.Year诸如此类的比较
(3 DayRender事件,可以通过cell和Day来呈现日期的特殊性,例如周末和节假日的颜色,
e.Day.IsOtherMOnth e.Day.IsWeekend 等