当前位置:编程学习 > C#/ASP.NET >>

急:::: VS2005 日历控件如何重新触发DayRender,

VS2005自带的日历控件
我用数据库里面的记录替换掉了日历控件里面的日期
写在DayRender里面
 for (int i = 0; i <= ds.Tables[0].Rows.Count-1; i++)
        {
                string date = string.Format("{0:yyyy/M/d}", ds.Tables[0].Rows[i][3]);
                string a = e.Day.Date.ToShortDateString();
                if (date == a)
                {
                    string id=ds.Tables[0].Rows[i][0].ToString();
                    HyperLink hyl = new HyperLink();
                    hyl.NavigateUrl = "Testing.aspx?Title="+id;
                    hyl.Text = ds.Tables[0].Rows[i][2].ToString();
                    //e.Cell.Text = e.Day.Date.Day.ToString();
                    //e.Cell.Controls.Clear();
                    e.Cell.Controls.Add(new LiteralControl("<br />"));
                    e.Cell.Controls.Add(hyl);
                //}
            }
可是我只查出了三个月的数据,因为数据量太大的话,速度会慢
现在我想请教的问题是:
在我切换月份的时候,我如何才能让日历控件里的值动态改变,数据库方面没问题
是重新调用DayRender吗?
怎么做?
有代码最好
谢谢 --------------------编程问答-------------------- 我觉得你这个需求可以考虑用alendar1_VisibleMonthChanged事件

  protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
    {       

        string date="";//我们用一个临时变量存储聚合索引的月份。
        if (ViewState["MyDateTime"] != null)
        {
            date = ViewState["MyDateTime"].ToString();//如果月份改变了那么读改变后的
        }
        else
        {
            date = DateTime.Now.ToString("yyyy-MM-dd");//没有改变读当前日期。
        }
        DateTime mytime = DateTime.Now.ToString("yyyy-MM-dd");
        DateTime mytimeSubOne, mytimeAddOne;//聚合sql时候使用
        if (DateTime.TryParse(date, out mytime))
        {
            mytimeAddOne=mytime.AddMonths(1);//算月份的第一天很麻烦多取一个月吧
            mytimeSubOne = mytime.AddMonths(-1);
        }
        //我们开始取得DateSet
        string strSql = "SELECT * FROM Table where 日期字段 between '" + mytimeSubOne + "' and '"+mytimeAddOne+"'";//其实仔细算一下总共是多取出一个月的dataset
        DataSet ds=//用上面的sql语句获取dateset

 for   (int   i   =   0;   i   <=   ds.Tables[0].Rows.Count-1;   i++) 
                { 
                                string   date   =   string.Format("{0:yyyy/M/d}",   ds.Tables[0].Rows[i][3]); 
                                string   a   =   e.Day.Date.ToShortDateString(); 
                                if   (date   ==   a) 
                                { 
                                        string   id=ds.Tables[0].Rows[i][0].ToString(); 
                                        HyperLink   hyl   =   new   HyperLink(); 
                                        hyl.NavigateUrl   =   "Testing.aspx?Title="+id; 
                                        hyl.Text   =   ds.Tables[0].Rows[i][2].ToString(); 
                                        //e.Cell.Text   =   e.Day.Date.Day.ToString(); 
                                        //e.Cell.Controls.Clear(); 
                                        e.Cell.Controls.Add(new   LiteralControl(" <br   /> ")); 
                                        e.Cell.Controls.Add(hyl); 
                                //} 
                        } 

    }
    protected void Calendar1_VisibleMonthChanged(object sender, MonthChangedEventArgs e)
    {//此事件是在月份改变的时候执行的,我们先确认现在的月份。
        string str= e.NewDate.ToString("yyyy-MM-dd");
        ViewState["MyDateTime"] = str;//viewstate是一种页面状态,生存周期是从赋值到页面关闭。
    }

--------------------编程问答-------------------- 我是新手,看起来有点吃力,努力研究ing!~!!! --------------------编程问答-------------------- 已经一个多月了,这帖子居然还在,呵呵
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,