📄 calendar.cs
字号:
//Copyright (C) 2006 dooogo.com
//Author:benben
//www.aspxclub.com
using System;
using System.Web.UI;
using System.Data;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Globalization;
using Club.Framework;
using Club.Framework.Components;
using Club.Framework.Configuration;
using Club.Framework.Data;
namespace Club.Common.Controls
{
/// <summary>
/// Calendar 的摘要说明。
/// </summary>
[DefaultProperty("Text"),
ToolboxData("<{0}:Calendar runat=server></{0}:Calendar>")]
public class Calendar : System.Web.UI.WebControls.Calendar
{
private System.Threading.Thread t;
private CultureInfo oldCulture;
private int[] arrCurrentDays,arrPreDays,arrNextDays; //三个变量分别是当前月,前一月,和下一个月
private int intCurrentMonth,intPreMonth,intNextMonth; //三个整型数组存放相对月份写有blog的日期
protected override void OnPreRender(EventArgs e)
{
t=System.Threading.Thread.CurrentThread;
oldCulture=t.CurrentCulture;
CultureInfo newci=(CultureInfo)oldCulture.Clone();
newci.DateTimeFormat.DayNames=new string[]{"日","一","二","三","四","五","六"};
newci.DateTimeFormat.FirstDayOfWeek=DayOfWeek.Sunday;
t.CurrentCulture=newci;
base.OnPreRender (e);
}
public void BindUrl(System.Web.UI.WebControls.DayRenderEventArgs e,string selectUrl,int registerId)
{
CalendarDay d = ((DayRenderEventArgs)e).Day;
TableCell c = ((DayRenderEventArgs)e).Cell;
// 初始化当前月有Blog的日期数组
if( intPreMonth == 0 )
{
intPreMonth = d.Date.Month; // 注意:日历控件初始化时我们得到的第一个月并不是当前月,而是前一个月的月份
intCurrentMonth = intPreMonth+1;
if (intCurrentMonth>12)
intCurrentMonth=1 ;
intNextMonth = intCurrentMonth+1;
if (intNextMonth >12)
intNextMonth =1;
arrPreDays = getArrayDay(d.Date.Year,intPreMonth,registerId); //得到前一个月有blog的日期数组
arrCurrentDays = getArrayDay(d.Date.Year,intCurrentMonth,registerId) ;//得到当月有blog的日期数组
arrNextDays = getArrayDay(d.Date.Year,intNextMonth,registerId) ;//得到下个月有blog的日期数组
}
int j=0;
if( d.Date.Month.Equals(intPreMonth) )
{
//Response.Write(d.Date.Month.Equals(intPreMonth));
while( ! arrPreDays[j].Equals(0) )
{
if(d.Date.Day.Equals(arrPreDays[j]))
{
c.Controls.Clear();
c.Controls.Add(new LiteralControl("<a class=\"c_pre\" href=\""+Globals.GetWebPath(string.Format(selectUrl,d.Date.Year,d.Date.Month,d.Date.Day))+"\">"+d.Date.Day+"</a>"));
}
j++;
}
}
else if( d.Date.Month.Equals(intCurrentMonth) )
{
//Response.Write(d.Date.Month.Equals(intCurrentMonth));
while( ! arrCurrentDays[j].Equals(0) )
{
if(d.Date.Day.Equals(arrCurrentDays[j]))
{
c.Controls.Clear();
c.Controls.Add(new LiteralControl("<a class=\"c_curr\" href=\""+Globals.GetWebPath(string.Format(selectUrl,d.Date.Year,d.Date.Month,d.Date.Day))+"\">"+d.Date.Day+"</a>"));
}
j++;
}
}
else if( d.Date.Month.Equals(intNextMonth) )
{
//Response.Write(d.Date.Month.Equals(intNextMonth));
while( ! arrNextDays[j].Equals(0) )
{
if(d.Date.Day.Equals(arrNextDays[j]))
{
c.Controls.Clear();
c.Controls.Add(new LiteralControl("<a class=\"c_next\" href=\""+Globals.GetWebPath(string.Format(selectUrl,d.Date.Year,d.Date.Month,d.Date.Day))+"\">"+d.Date.Day+"</a>"));
}
j++;
}
}
}
private int[] getArrayDay(int intYear,int intMonth,int registerId)
{
int i=0;
int[] intArray = new int[31];
string sql="select PostDate from c_Diary where RegisterId="+registerId+" and year(PostDate)="+intYear+" and month(PostDate)="+intMonth+"";
DataSet ds=Globals.DbProvider.GetDataSet(sql);
foreach( DataRow rs in ds.Tables[0].Rows)
{
if( i==0 )
{
intArray[i] = System.Convert.ToDateTime(rs["PostDate"].ToString()).Day;
i++;
}
else if( System.Convert.ToDateTime(rs["PostDate"].ToString()).Day != intArray[i-1] )
{
intArray[i] = System.Convert.ToDateTime(rs["PostDate"].ToString()).Day;
i++;
}
}
return intArray;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -