文档章节

ASP.NET学习之万年历

北风其凉
 北风其凉
发布于 2014/05/06 21:35
字数 873
阅读 191
收藏 2

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>&nbsp;
            <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

© 著作权归作者所有

北风其凉

北风其凉

粉丝 119
博文 498
码字总数 463468
作品 4
朝阳
程序员
私信 提问
《Pro ASP.NET MVC 3 Framework》学习笔记目录

《Pro ASP.NET MVC 3 Framework》简介: 作者: Adam Freeman 和 Steven Sanderson 出版社: Apress; New 平装: 820页 语种: 英语 ISBN: 1430234040 声明:笔记里面按我自己的理解翻译了大部分...

mszhangxuefei
2012/02/07
0
0
学习ASP.NET Core Razor 编程系列十七——分组

学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET Core Razor 编程系列三——创建数据表及创建项目...

DotNet菜园
2018/08/22
0
0
自学MVC看这里——全网最全ASP.NET MVC 教程汇总

MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC。小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口。本文从Why,W...

葡萄城控件技术团队
2016/08/18
492
0
《ASP.NET Core In Action》读书笔记系列,这是一个手把手的从零开始的教学系列目录

  最近打算系统学习一下asp.net core ,苦于没有好的中文书藉,只好找来一本英文的 《ASP.NET Core In Action》学习。我和多数人一样,学习英文会明显慢于中文。希望与我相同情况的人避免这...

china_fucan
01/31
0
0
学习ASP.NET Core Razor 编程系列十五——文件上传功能(三)

学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET Core Razor 编程系列三——创建数据表及创建项目...

DotNet菜园
2018/07/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

EDI 电子数据交换全解指南

EDI(Electronic Data Interchange,电子数据交换)技术使得企业与企业(B2B)实现通信自动化,帮助交易伙伴和组织更快更好地完成更多工作,并消除了人工操作带来的错误。从零售商到制造商、物...

EDI知行软件
今天
3
0
CentOS7的LVM动态扩容

# 问题 CentOS7上面的磁盘空间有点紧张,需要扩容。 解决 查询当前磁盘状态 [root@xxx ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTfd0 2:0 1 4K ...

亚林瓜子
今天
5
0
Kafka 0.8 Producer (0.9以前版本适用)

Kafka旧版本producer由scala编写,0.9以后已经废除 示例代码如下: import kafka.producer.KeyedMessage;import kafka.javaapi.producer.Producer;import kafka.producer.ProducerConfig;......

实时计算
今天
5
0
Giraph源码分析(八)—— 统计每个SuperStep中参与计算的顶点数目

作者|白松 目的:科研中,需要分析在每次迭代过程中参与计算的顶点数目,来进一步优化系统。比如,在SSSP的compute()方法最后一行,都会把当前顶点voteToHalt,即变为InActive状态。所以每次...

数澜科技
今天
6
0
Navicat 快捷键

操作 结果 ctrl+q 打开查询窗口 ctrl+/ 注释sql语句 ctrl+shift +/ 解除注释 ctrl+r 运行查询窗口的sql语句 ctrl+shift+r 只运行选中的sql语句 F6 打开一个mysql命令行窗口 ctrl+l 删除一行 ...

低至一折起
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部