您的位置:首页 > 编程语言 > ASP

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

2007-03-27 10:33 344 查看
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);
}

///------------------------------------------------------
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐