ASP.NET 根据当前日期生成当月日历

    protected void CalendarCreate( DateTime FirstDate)
    {
        Table1.Rows[0].Cells[1].Text = FirstDate.Year.ToString() + "年" + FirstDate.Month.ToString()+"月";
        string labelname="label";
        string picname = "";
        int labelnameindex=0;
        int dayadd = 0;///从当前月份第一天往后累计天数
        int weekindex = 0;///表示当前月份的第一天是星期几
        int curWeek = 0;
        if (Convert.ToInt32(FirstDate.DayOfWeek) != 7)
        {
            weekindex = Convert.ToInt32(FirstDate.DayOfWeek);
        }
        int lastmonthindex = 1 - weekindex;
        ///绘制第二到最后一行日历
        for (int i = 2; i <8; i++)
        {
            for (int j = 0; j < 7; j++)
            {
                    TableCell CurTc = new TableCell();
                    CurTc = Table1.Rows[i].Cells[j];
                    //创建日期存放控件label,用来传递每个单元格中datalist的查询参数
                    Label celllabel = new Label();
                    celllabel.ID = labelname + (labelnameindex++).ToString();
                    if (!((i == 2) && (j < weekindex)))
                    {
                        picname = FirstDate.AddDays(dayadd).Day.ToString();
                        curWeek = Convert.ToInt32(FirstDate.AddDays(dayadd).DayOfWeek);
                        celllabel.Text = FirstDate.AddDays(dayadd++).Date.ToString();
                    }
                    else
                    {
                        picname = FirstDate.AddDays(lastmonthindex - 1).Day.ToString();
                        curWeek = Convert.ToInt32(FirstDate.AddDays(lastmonthindex-1).DayOfWeek);;
                        celllabel.Text = FirstDate.AddDays(lastmonthindex++).Date.ToString();
                    }
                    DIV1.Controls.Add(celllabel);//添加到form中,必须输出页面,否则以后的sqldatasource无法访问

                    //---------------------------------------------------------------------------------------------------------- 
                    //首先为此单元格添加相应日历图片,用panel实现用来作为以后列表数据添加的容器
                    Panel pn = new Panel();
                    //if (curWeek>=6)
                    pn.BackImageUrl = "http://localhost/WebSite/imgs/" + picname + ".jpg";
                    pn.Width = 104;
                    pn.Height = 124;
                    CurTc.Controls.Add(pn);
                    //----------------------------------------------------------------------------------------------------------
                   
               
                     //创建sqldatasource

                    SqlDataSource celldatasource = new SqlDataSource();

                    form1.Controls.Add(celldatasource);

                    //添加查询参数,绑定每个单元格中的数据列表像是与单元格所对应日期一致
                    DataList Dl = new DataList();
                    ControlParameter pr = new ControlParameter();
                    pr.Name = "seldate" + (labelnameindex++).ToString();
                    pr.ControlID = celllabel.ID;
                    pr.PropertyName = "text";
                    //添加查询参数之前需要先清除,否则再次提交页面出现参数重复错误
                    celldatasource.SelectParameters.Clear();
                    celldatasource.SelectParameters.Add(pr);
                    celldatasource.SelectParameters[0].Direction = ParameterDirection.Input;
                    pr.Type = TypeCode.DateTime;
                    //----------------------------------------------------------------------------------------------------------
                    celldatasource.ConnectionString = @"Data Source=DEAN-PC/SQLEXPRESS;Initial Catalog=DEANSWORK;Integrated Security=True";
                    celldatasource.SelectCommand = "SELECT [Ca_id], [Ca_date], [Ca_content], [U_id] FROM [Calendar_content] where [Ca_Date]=@" + pr.Name.ToString();
                    //----------------------------------------------------------------------------------------------------------


                    //创建,设置datalist并在表格每个单元格中的panel中加载datalist控件  
                    Dl.DataSource = celldatasource;
                    Dl.DataKeyField = "Ca_id";
                    Dl.AlternatingItemTemplate = Page.LoadTemplate("datalist.ascx");
                    Dl.BackColor = System.Drawing.Color.Transparent;
                    pn.Controls.Add(Dl);
                    //----------------------------------------------------------------------------------------------------------

                    //绑定sqldatasource和datalist的数据集
                    celldatasource.DataBind();
                    Dl.DataBind();
                    //----------------------------------------------------------------------------------------------------------
                    //如果没有数据输出,单元格内会连并datalist和panel不输出页面,因此对于没有数据集的单元格重新填写其
                    //图片信息(此处用panel实现竟然依然没有图片,疑惑中,因此暂时用image替代)
                    if (Dl.Items.Count == 0)
                    {
                        Image im = new Image();
                        im.ImageUrl = "http://localhost/WebSite/imgs/" + picname + ".jpg";
                        CurTc.Controls.Clear();
                        //DIV1.Controls.Clear();
                        DIV1.Controls.Add(celllabel);
                        CurTc.Controls.Add(im);
                    }

                    ///------------------------------------------------------
                }
            }
    } 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值