急:::: 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