1.关于万年历
这是一个非常简陋的万年历,C#的DateTime类提供了DayOfWeek属性,星期计算变得非常简单
2.ASP代码部分
BODY标签内代码
<body>
<form id="form1" runat="server">
<div>
<h3>ASP学习:万年历</h3>
世纪:
<select id ="Century" runat="server">
<option value="1400">15世纪</option>
<option value="1500">16世纪</option>
<option value="1600">17世纪</option>
<option value="1700">18世纪</option>
<option value="1800">19世纪</option>
<option value="1900">20世纪</option>
<option value="2000" selected="selected">21世纪</option>
<option value="2100">22世纪</option>
<option value="2200">23世纪</option>
<option value="2300">24世纪</option>
<option value="2400">25世纪</option>
</select>
年代:
<select id ="Decade" runat="server">
<option value="00">00年代</option>
<option value="10" selected="selected">10年代</option>
<option value="20">20年代</option>
<option value="30">30年代</option>
<option value="40">40年代</option>
<option value="50">50年代</option>
<option value="60">60年代</option>
<option value="70">70年代</option>
<option value="80">80年代</option>
<option value="90">90年代</option>
</select>
年:
<select id ="Year" runat="server">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4" selected="selected">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
月:
<select id ="Month" runat="server">
<option value="1">一月(January)</option>
<option value="2">二月(February)</option>
<option value="3">三月(March)</option>
<option value="4" selected="selected">四月(April)</option>
<option value="5">五月(May)</option>
<option value="6">六月(June)</option>
<option value="7">七月(July)</option>
<option value="8">八月(August)</option>
<option value="9">九月(September)</option>
<option value="10">十月(October)</option>
<option value="11">十一月(November)</option>
<option value="12">十二月(December)</option>
</select>
<asp:Button ID="btnSubmit" runat="server"
OnClick="btnSubmit_Click" Text="提交" />
<hr/>
</div>
</form>
<table id="tbCalendar" border='1' runat="server"
style='border-collapse:collapse;width:100%;table-layout:fixed;word-wrap:break-word;'>
</table>
</body>
3.C#代码部分
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
/// <summary>
/// 提交
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSubmit_Click(object sender, EventArgs e)
{
int iYearPart1 = int.Parse(Century.Value);
int iYearPart2 = int.Parse(Decade.Value);
int iYearPart3 = int.Parse(Year.Value);
int iYear = iYearPart1 + iYearPart2 + iYearPart3;
int iMonth = int.Parse(Month.Value);
//类似MessageBox的效果
//注意:1.不要使用 ButtonXXX.Attributes.Add("onclick","XXX") 重复添加按钮事件
// 2.Page.RegisterStartupScript被标注为:“已过时”
ClientScript.RegisterStartupScript(this.GetType(), "",
string.Format("<script>alert('日历:{0}年{1}月 已生成完毕');</script>",
iYear.ToString(), iMonth.ToString()));
//
string[][] calendar = new string[][]
{
new string[7] { "-", "-", "-", "-", "-", "-", "-" },
new string[7] { "-", "-", "-", "-", "-", "-", "-" },
new string[7] { "-", "-", "-", "-", "-", "-", "-" },
new string[7] { "-", "-", "-", "-", "-", "-", "-" },
new string[7] { "-", "-", "-", "-", "-", "-", "-" },
new string[7] { "-", "-", "-", "-", "-", "-", "-" }
};
DateTime dtFirst = new DateTime(iYear, iMonth, 1);
int x = 0, y = 0;
string s = dtFirst.DayOfWeek.ToString();
switch (dtFirst.DayOfWeek.ToString())
{
case "Sunday": y = 0; break;
case "Monday": y = 1; break;
case "Tuesday": y = 2; break;
case "Wednesday": y = 3; break;
case "Thursday": y = 4; break;
case "Friday": y = 5; break;
case "Saturday": y = 6; break;
}
//计算指定月份的日期
DateTime dt = dtFirst;
while(true)
{
calendar[x][y] = dt.Day.ToString();
dt = dt.AddDays(1);
if (dt.Month == iMonth)
{
if (++y > 6)
{
x++;
y = 0;
}
}
else
{
break;
}
}
//HtmlTableRow 和 HtmlTableCell 需要 System.Web.UI.HtmlControls
//上部:标题
HtmlTableRow r1 = new HtmlTableRow();
HtmlTableCell c1 = new HtmlTableCell();
c1.Controls.Add(new LiteralControl("万年历"));
c1.ColSpan = 7; //合并单元格,colspan属性可以实现单元格跨越多列
c1.Align = "Center"; //单元格内文字居中
r1.Cells.Add(c1);
tbCalendar.Rows.Add(r1);
//中部:日历表
int row = 0;
int numrows = x + 1; //日历最多有六行
int numcells = 7; //每周有七天
for (int i = 0; i < numrows; i++)
{
HtmlTableRow r = new HtmlTableRow();
r.Height = "70";
row++;
for (int j = 0; j < numcells; j++)
{
HtmlTableCell c = new HtmlTableCell(); //创建单元格对象
c.Controls.Add(new LiteralControl(
calendar[i][j] != "-" ? calendar[i][j] : ""));
if (calendar[i][j] == "-")
{
c.BgColor = "Gainsboro";
}
else
{
c.BgColor = "LawnGreen";
}
c.Align = "Center";
r.Cells.Add(c); //添加该单元格对象
}
tbCalendar.Rows.Add(r);//添加行对
}
//底部:其他信息
HtmlTableRow r2 = new HtmlTableRow();
HtmlTableCell c2 = new HtmlTableCell();
c2.Controls.Add(new LiteralControl("生成于:" + DateTime.Now.ToString()));
c2.ColSpan = 7; //合并单元格,colspan属性可以实现单元格跨越多列
c2.Align = "Center";
r2.Cells.Add(c2);
tbCalendar.Rows.Add(r2);
}
}
END