日历控件是.net自带的控件之一, 功能强大, 在很多项目开发中都有用到, 对于blog系统来说更是必不可少.纵是好玉也仍需雕琢, 为了使它更美观实用, 我们还需要对它进行二次开发.
     新建一个用户控件, 把calender控件拉进来.第一步是外观设置, 这个根据你的需要, 只需对它的相关属性做一些调整即可.下图是我调整后的界面
     属性设置如下:
<asp:calendar id = "Calendar1" CellPadding = "2" Width = "160px" TitleStyle-BackColor = "#000000" 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对象时发生.
DayRender:当为Calendar控件在控件层次结构中创建每一天时发生.
     先定义三个整型变量和整型数组
private int[] arrCurrentDays, arrPreDays, arrNextDays;
//三个变量分别是当前月, 前一月, 和下一个月
private int intCurrentMonth, intPreMonth, intNextMonth;
//三个整型数组存放相对月份写有blog的日期
protected System.Web.UI.WebControls.Calendar Calendar1;
//这个就是我们的日历控件了
2. 下面我将分别给出这两个事件的源码, 并在下面解释它实现的功能, 如果你看不明白, 可以先看下面的说明
PreRender
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;
}
 以上代码改变了星期名称的显示.你只需改变字符数组的值就能改名称显示.
DayRender
private void Calendar1_DayRender( object sender, System.Web.UI.WebControls.DayRenderEventArgs e )
{
    //该控件在创建每一天时发生. CalendarDay d = ( ( DayRenderEventArgs )e ).Day;
    TableCell c = ( ( DayRenderEventArgs )e ).Cell;
}

相关文章:

  • 2021-05-25
  • 2021-11-29
  • 2022-12-23
  • 2021-12-03
  • 2021-12-05
  • 2021-12-05
  • 2021-12-05
  • 2021-06-19
猜你喜欢
  • 2021-11-06
  • 2022-12-23
  • 2022-12-23
  • 2021-12-03
  • 2022-12-23
相关资源
相似解决方案