public partial class WebUserControl : System.Web.UI.UserControl
{
public DateTime CurDate
{
get
{
if (this.ViewState["CurDate"] == null)
{
this.ViewState["CurDate"] = DateTime.Now;
return DateTime.Now;
}
DateTime dt = (DateTime)this.ViewState["CurDate"];
return dt;
}
set
{
this.ViewState["CurDate"] = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void GridView1_Load(object sender, EventArgs e)
{
GridView2.DataSource = GetDataTable(CurDate.Year, CurDate.Month);
GridView2.DataBind();
this.lbMonth.Text = CurDate.ToShortDateString().ToString();
SetColor();
}
private void SetColor()
{
for (int i = 0; i < 6; i++)
{
GridView2.Rows[i].Cells[0].ForeColor = Color.Blue;
for (int j = 1; j < 8; j++)
{
if (j == 1 || j == 7)
{
GridView2.Rows[i].Cells[j].ForeColor = Color.Red;
}
if(int.Parse(GridView2.Rows[0].Cells[j].Text.ToString())>20)
{
GridView2.Rows[0].Cells[j].ForeColor = Color.Brown;
}
if (i > 3 && int.Parse(GridView2.Rows[i].Cells[j].Text.ToString()) < 14)
{
GridView2.Rows[i].Cells[j].ForeColor = Color.Brown;
}
}
}
}
DataTable GetDataTable(int year,int month)
{
DataTable dt = new DataTable("Calendar");
DataColumn dc1 = new DataColumn("Week", Type.GetType("System.String"));
DataColumn dc2 = new DataColumn("Sunday", Type.GetType("System.Int16"));
DataColumn dc3 = new DataColumn("Monday", Type.GetType("System.Int16"));
DataColumn dc4 = new DataColumn("Tuesday", Type.GetType("System.Int16"));
DataColumn dc5 = new DataColumn("Wednesday", Type.GetType("System.Int16"));
DataColumn dc6 = new DataColumn("Thursday", Type.GetType("System.Int16"));
DataColumn dc7 = new DataColumn("Friday", Type.GetType("System.Int16"));
DataColumn dc8 = new DataColumn("Saturday", Type.GetType("System.Int16"));
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
dt.Columns.Add(dc4);
dt.Columns.Add(dc5);
dt.Columns.Add(dc6);
dt.Columns.Add(dc7);
dt.Columns.Add(dc8);
//以上代码完成了DataTable的构架,但是里面是没有任何数据的
int nulldate = 0;
DateTime nowtime = new DateTime(CurDate.Year,CurDate.Month,1);
//年月的第一天是星期几
string week = nowtime.DayOfWeek.ToString();
for (int i = 1; i <= 7; i++)
{
//星期相同
if (dt.Columns[i].ColumnName.Equals(week))
{
nowtime = nowtime.AddDays(nulldate);
for (int rows = 0; rows < 6; rows++)
{
DataRow dr = dt.NewRow();
DateTime start = new DateTime(nowtime.AddDays(6).Year, 1, 1);
dr["Week"] = "第"+(WeekNumber(start) + nowtime.AddDays(6).DayOfYear)/7+"周";
dr["Sunday"] = nowtime.Day;
dr["Monday"] = nowtime.AddDays(1).Day;
dr["Tuesday"] = nowtime.AddDays(2).Day;
dr["Wednesday"] = nowtime.AddDays(3).Day;
dr["Thursday"] = nowtime.AddDays(4).Day;
dr["Friday"] = nowtime.AddDays(5).Day;
dr["Saturday"] = nowtime.AddDays(6).Day;
nowtime = nowtime.AddDays(7);
dt.Rows.Add(dr);
}
}
nulldate--;
}
return dt;
}
private int WeekNumber(DateTime month)
{
DateTime dtime = new DateTime(month.Year, 01, 01);
int num = 0;
switch (dtime.DayOfWeek.ToString())
{
case "Monday":
num = 7;
break;
case "Tuesday":
num = 8;
break;
case "Wednesday":
num = 9;
break;
case "Thursday":
num = 10;
break;
case "Friday":
num = 11;
break;
case "Saturday":
num = 12;
break;
case "Sunday":
num = 6;
break;
}
return num;
}
/// <summary>
/// 上个月
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button1_Click(object sender, EventArgs e)
{
this.CurDate = this.CurDate.AddMonths(-1);
this.ViewState["CurDate"] = CurDate;
this.lbMonth.Text = CurDate.ToShortDateString().ToString();
GridView2.DataSource = GetDataTable(CurDate.Year, CurDate.Month);
GridView2.DataBind();
SetColor();
}
/// <summary>
/// 下个月
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button2_Click(object sender, EventArgs e)
{
this.CurDate = this.CurDate.AddMonths(1);
this.ViewState["CurDate"] = CurDate;
this.lbMonth.Text = CurDate.ToShortDateString().ToString();
GridView2.DataSource = GetDataTable(CurDate.Year, CurDate.Month);
GridView2.DataBind();
SetColor();
}
}