请问,根据时间可以画出如下月份的一个表格吗? 
例如时间是:2007-10 表格如下: (用c#语言)
日       一     二       三       四     五       六 
          1       2       3       4       5       6 
7       8       9       10     11     12     13 
14     15     16     17     18     19     20 
21     22     23     24     25     26     27 
28     29     30     31         

解决方案 »

  1.   

    在页面中放一个Label ,两个dropdownlist  一个有选择年 一个选择月。
    代码如下。贴上去就能运行。string Date = this.DdlYear.SelectedValue+"-"+this.DdlMonth.SelectedValue+"-01";
    string NextDate;
    if(this.DdlMonth.SelectedValue == "12")
    {
    int aa = 1;
    NextDate = this.DdlYear.SelectedValue+1+"-"+aa+"-01";
    }
    else
    {
    NextDate = this.DdlYear.SelectedValue+"-"+(Convert.ToInt32(this.DdlMonth.SelectedValue)+1).ToString()+"-01";
    }
    StringBuilder sb = new StringBuilder();
    sb.Append("<table width=665 border=0 cellSpacing=1 cellPadding=1><tr width = 665 align=center  height=60 bgcolor=\"#99ccff\"><td width=100><FONT face=\"宋体\"  size=3  style=\"FONT-WEIGHT: bold\" color=#003300>星期日</font></td><td width=100><FONT face=\"宋体\"  size=3  style=\"FONT-WEIGHT: bold\" color=#003300>星期一</font></td><td width=100><FONT face=\"宋体\"  size=3  style=\"FONT-WEIGHT: bold\" color=#003300>星期二</font></td><td width=100><FONT face=\"宋体\"  size=3  style=\"FONT-WEIGHT: bold\" color=#003300>星期三</font></td><td width=100><FONT face=\"宋体\"  size=3  style=\"FONT-WEIGHT: bold\" color=#003300>星期四</font></td><td width=100><FONT face=\"宋体\"  size=3  style=\"FONT-WEIGHT: bold\" color=#003300>星期五</font></td><td width=100><FONT face=\"宋体\"  size=3  style=\"FONT-WEIGHT: bold\" color=#003300>星期六</font></td></font></tr>");
    sb.Append("<tr width=665 bgcolor=\"#ddeaf5\">");
    int j = 0;         //保存这是这个礼拜的第几天。
    for (int i=0;i<Convert.ToInt32(Convert.ToDateTime(Date).DayOfWeek);i++)
    {
    j = j + 1;
    sb.Append("<td width=100 height=60 bordercolorlight=\"#00ff00\" align=center><FONT face=\"宋体\" color=\"#ff0033\" style=\"FONT-WEIGHT: bold\"  size=2></font></td>");
    }
    Convert.ToDateTime(Date);
    TimeSpan ts = Convert.ToDateTime(NextDate)-Convert.ToDateTime(Date);
    for(int i = 1;i<=ts.Days;i++)
    {
    j = j + 1;
    TKnowledgeBase ObjKnow = new TKnowledgeBase();
    ObjKnow.TypeName1 = "日程";
    ObjKnow.TypeName2 = "协作日程";
    ObjKnow.ExhiCode = Session["CurrentManagerExhiCode"].ToString();   //当前展会。
    ObjKnow.ToDate = this.DdlYear.SelectedValue.ToString()+"-"+DdlMonth.SelectedValue.ToString()+"-"+ i.ToString();
    DataSet ds = ObjKnow.GetList();
    //string str = "";
    if(ds.Tables[0].Rows.Count > 0)
    {
    sb.Append("<td width=100 height=60 bordercolorlight=\"#00ff00\" nowrap=false align=left>");
    for(int f=0;f<ds.Tables[0].Rows.Count;f++)
    {

    if( j % 8 == 0)
    {
    sb.Append("</tr><tr width =665 bgcolor=\"#ddeaf5\">");
    j = j + 1;
    }
    sb.Append("<a href = javascript:alert(\"" + ds.Tables[0].Rows[f]["Content"]+ "\")>"  + (f+1).ToString()+"、"+  ds.Tables[0].Rows[f]["Title"] + "</a><br>");
    }
    sb.Append("</td>");
    }
    else
    {
    if( j % 8 == 0)
    {
    sb.Append("</tr><tr width=665 bgcolor=\"#ddeaf5\">");
    j = j + 1;
    }
    sb.Append("<td width=100 height=60 bordercolorlight=\"#00ff00\" nowrap=false align=center><FONT face=\"宋体\" color=\"#ff0033\" style=\"FONT-WEIGHT: bold\"  size=5>"+ i +"</font></td>");
    }

    }
    sb.Append("</tr></table>");
    lblCaclder.Text=sb.ToString();
      

  2.   

    哦上面的代码  是我从我的项目中COPY过来的,没有进行剪辑。
    复加了日历日志显示功能。你稍做整理也就可以了。
      

  3.   

    可以做个SQL函数create function f_calendar(@year int,@month int)
    returns @t table(日 varchar(4),一 varchar(4),二 varchar(4),三 varchar(4),四 varchar(4),五 varchar(4),六 varchar(4))
    as
    begin    declare @a table(id int identity(0,1),date datetime)
        
        insert into @a(date) 
        select top 31 rtrim(@year)+'-'+rtrim(@month)+'-1' from sysobjects
        
        update @a set date=dateadd(dd,id,date)        insert into @t
        select
            max(case datepart(dw,date) when 7 then rtrim(day(date)) else '' end),
            max(case datepart(dw,date) when 1 then rtrim(day(date)) else '' end),
            max(case datepart(dw,date) when 2 then rtrim(day(date)) else '' end),
            max(case datepart(dw,date) when 3 then rtrim(day(date)) else '' end),
            max(case datepart(dw,date) when 4 then rtrim(day(date)) else '' end),
            max(case datepart(dw,date) when 5 then rtrim(day(date)) else '' end),
            max(case datepart(dw,date) when 6 then rtrim(day(date)) else '' end)
        from
            @a
        where
            month(date)=@month
        group by
            (case datepart(dw,date) when 7 then datepart(week,date)+1 else datepart(week,date) end)    return
    end
    go执行函数set datefirst 1
    select * from dbo.f_calendar(2008,1)-----------------------------------------------------------------------------------------------
    日       一       二       三        四       五       六
    1 2 3 4 5 6
    7 8 9 10 11 12 13
    14 15 16 17 18 19 20
    21 22 23 24 25 26 27
    28 29 30 31
      

  4.   

    TKnowledgeBase ObjKnow = new TKnowledgeBase(); 是什么意思啊?
      

  5.   

    html:<asp:Label ID="MyLabel" runat="server" Text=""></asp:Label>cs:
     protected void Page_Load(object sender, EventArgs e)
        {        string myTime = "2008-01-01";
            int days = DateTime.DaysInMonth(Convert.ToInt32(Convert.ToDateTime(myTime).ToString("yyyy")), Convert.ToInt32(Convert.ToDateTime(myTime).ToString("MM")));
            StringBuilder strSql = new StringBuilder();
            strSql.Append("<table width='100%' border='1'>");
            strSql.Append("<tr><td>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr>");
            for (int m=1;m<days;m++)
            {//循环月份,m代表天数          
                for (int n = 0; n < 7; n++)
                {//循环星期
                    if (n == 0)
                    {
                        strSql.Append("<tr>");
                    }
                    if (n == Convert.ToInt32(Convert.ToDateTime(myTime.Substring(0,7) + "-" + m.ToString()).DayOfWeek))
                    {
                        strSql.Append(" <td>" + m.ToString() + " </td> ");
                        if (m >= days)
                        {
                            break;
                        }
                        if (n != 6)
                        {
                            m++;
                        }
                    }
                    else
                    {
                        strSql.Append(" <td> </td> ");
                    }
                    if (n == 6)
                    {
                        strSql.Append("</tr>");
                    }
                }
            }
            strSql.Append("</table>");
            MyLabel.Text = strSql.ToString();
        }