日历控件(Calendar)

日历控件(Calendar)
为日历定制样式,外观
控制日历的选择模式
设置和获取选中的日期
让特殊的日期有提示,同时我们模仿博客园日历,将页面导航到有文章的日期去
Calendar事件DayRender在呈现日时激发

protected   void  Page_Init( object  sender, EventArgs e)
{
// 只运行一次
 arr  =   new   string [ 13 ][];
 
for  ( int  i = 0 ; i < 13 ; i ++ )
 {
  arr[i] 
=   new   string [ 32 ];
 }
 arr[
1 ][ 1 =   " 元旦节 " ;
 arr[
2 ][ 14 =   " 情人节 " ;
 arr[
3 ][ 8 =   " 妇女节 " ;

 
// 填充年、月、日下拉菜单
  for ( int  y  =   1980 ; y  <   2050 ; y ++ )
 {
  ye.Items.Add(y.ToString() );
 }
 
for ( int  m  =   1 ;m  <   13 ; m ++ )
 {
  mo.Items.Add(m.ToString() );
 }
 
for ( int  d  =   1 ;d  <   32 ; d ++ )
 {
// 有个问题,2月没有31号!!需要改进
  da.Items.Add(d.ToString() );
 }
}

protected   void  DropDownList1_SelectedIndexChanged( object  sender, EventArgs e)
{
 
switch  (DropDownList1.SelectedValue)
 {
  
case   " None " :
   Calendar1.SelectionMode 
=  CalendarSelectionMode.None;
   
break ;
  
case   " DayWeekMonth " :
   Calendar1.SelectionMode 
=  CalendarSelectionMode.DayWeekMonth;
   
break ;
  
case   " DayWeek " :
   Calendar1.SelectionMode 
=  CalendarSelectionMode.DayWeek;
   
break ;
  
case   " Day " :
   Calendar1.SelectionMode 
=  CalendarSelectionMode.Day;
   
break ;
 }  
}

protected   void  Calendar1_SelectionChanged( object  sender, EventArgs e)
{
 Label1.Text 
=  Calendar1.SelectedDate.ToShortDateString();
 Label2.Text 
=  Calendar1.SelectedDate.Day.ToString();
 Label3.Text 
=  Calendar1.SelectedDate.Month.ToString();
 Label4.Text 
=  Calendar1.SelectedDate.Year.ToString();
}

protected   void  Button1_Click( object  sender, EventArgs e)
{
 
string  y  =  ye.SelectedValue.ToString();
 
string  m  =  mo.SelectedValue.ToString();
 
string  d  =  da.SelectedValue.ToString();
 Calendar1.VisibleDate 
=  Convert.ToDateTime(y  +   " - "   +  m  +   " - "   +  d);
}

protected   static  DataTable ds( string  day)  // using System.Data.SqlClient;
{
 SqlConnection con 
=   new  SqlConnection(ConfigurationManager.ConnectionStrings[ " pconn " ].ConnectionString);
 SqlDataAdapter sda 
=   new  SqlDataAdapter();
 sda.SelectCommand 
=   new  SqlCommand( " SELECT [title_id], [pubdate], [title] FROM [titles] WHERE ([pubdate]= ' "   +  day  +   " ' ) " );
 DataSet ds 
=   new  DataSet();
 sda.Fill(ds, 
" titles " );
 
return  ds.Tables[ " titles " ];
}

protected   void  Calendar1_DayRender( object  sender, DayRenderEventArgs e) // 注意事件名称是 DayRender
{
 CalendarDay d
=  e.Day;  // 设置当前日期
 TableCell c  =  e.Cell;  // 设置当前表格
  if  (d.IsOtherMonth )
 { 
// 如果是其他月份的话就清除本来的节日
  c.Controls.Clear();
 }
 
else
 {
  
try
  {
   
string  txt  =  arr[d.Date.Month][d.Date.Day];  // 得到完整的当前[月][日]
    if  (txt  !=   string .Empty )
   {
    
string  day  =  e.Day.Date.ToShortDateString();  // 获取当前日期并转化为短日期格式
     foreach  (DataRow dr  in  ds(day).Rows)  // 循环数据视图中的每一行
    {
     c.Controls.Clear(); 
// 首先我们要清除表格中所有元素
     c.Controls.Add( new  ListeralControl( " " + day + "'>" + e.Day.Date.Day + " "  ) );
    }

    c.Controls.Add(
new  LiteralControl( "
"   +  txt) );  // 如果有的话,就在日期数字后面换行显示出来
   }
  }
  
catch  (Exception exe)
  {
   Response.Write(exe.ToString() );
  }
 }
}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-539839/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12639172/viewspace-539839/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值