ASP.Net(C#)使用Infragistics控件包实现“个人工作计划管理”功能。由于WebMonthView控件(包括配合使用的WebScheduleInfo控件)封装了一定的业务逻辑(逻辑很僵硬,讨厌的家伙),而我只需要借助其实现日历的大块列表显示效果,使用点击弹出的网页实现业务逻辑。所以,我使用这样的代码进行操作: /// <summary>
/// 获取并绑定当前用户的日程安排
/// </summary>
/// <returns></returns>
private bool GetBindDailySchedule()
{
//获取日程安排
DataSet DailySchedule_DS = new DataSet();
bool temp_Result = GetDailySchedule(ref DailySchedule_DS);
if(temp_Result == false)
{
return false;
}
//绑定日程安排
//禁止使用全天事件
//WebScheduleInfo1.AllowAllDayEvents=false;
//到时是否自动弹出提示窗口
//WebScheduleInfo1.EnableReminders=false;
for(int i=0;i<DailySchedule_DS.Tables[0].Rows.Count;i++)
{ //生成日历项目(活动安排)对象
Infragistics.WebUI.WebSchedule.Appointment appt = new Infragistics.WebUI.WebSchedule.Appointment (WebScheduleInfo1); //主键字段绑定
appt.DataKey = DailySchedule_DS.Tables[0].Rows[i]["Schedule_Id"];
//和上面一样
appt.Key=DailySchedule_DS.Tables[0].Rows[i]["Schedule_Id"].ToString();
//活动安排标题
appt.Subject =  DailySchedule_DS.Tables[0].Rows[i]["Schedule_Title"].ToString();
//活动安排内容
appt.Description= DailySchedule_DS.Tables[0].Rows[i]["Schedule_Content"].ToString();
//活动开始时间
appt.StartDateTime = Infragistics.WebUI.Shared.SmartDate.Parse(DailySchedule_DS.Tables[0].Rows[i]["Execute_Date"].ToString()); //Response.Write(DailySchedule_DS.Tables[0].Rows[i]["Execute_Date"].ToString()+"&nbsp;&nbsp;&nbsp;"+appt.StartDateTime.ToString() +"<br>"); //活动结束时间
appt.EndDateTime = Infragistics.WebUI.Shared.SmartDate.Parse(DailySchedule_DS.Tables[0].Rows[i]["Execute_Date"].ToString()).AddMinutes(30); DateTime TomorrowDate = new DateTime (DateTime.Now.Year,DateTime.Now.Month,DateTime.Now.Day+1,0,0,10);
DateTime TodayDate = new DateTime (DateTime.Now.Year,DateTime.Now.Month,DateTime.Now.Day,0,0,0);
DateTime ApptDate = new DateTime (Convert.ToDateTime(DailySchedule_DS.Tables[0].Rows[i]["Execute_Date"]).Year,Convert.ToDateTime(DailySchedule_DS.Tables[0].Rows[i]["Execute_Date"]).Month,Convert.ToDateTime(DailySchedule_DS.Tables[0].Rows[i]["Execute_Date"]).Day,0,0,0);
//活动持续显示的时间
if(ApptDate.CompareTo(TodayDate) <0 )
{
//已经过去时间的事件
appt.Duration =new TimeSpan(0,30,0);// new TimeSpan(30,0,0,0);TodayDate-ApptDate;
appt.Status=Infragistics.WebUI.WebSchedule.ActivityStatus.Normal;//Expired,Normal
appt.Visible=true;

}
else if (ApptDate.CompareTo(TodayDate) == 0 )
{
//今天的事件
appt.Duration = TomorrowDate-Convert.ToDateTime(DailySchedule_DS.Tables[0].Rows[i]["Execute_Date"]);//只显示1天
}
else
{
//尚未发生的事件
appt.Duration = new TimeSpan(0,30,0);
}
//是否全天事件
//appt.AllDayEvent=false;
//到时是否自动弹出提示窗口
//appt.EnableReminder=false;
//重要级别
//appt.Importance=Infragistics.WebUI.WebSchedule.Importance.High;
appt.ResourceKey = this.WebScheduleInfo1.VisibleResources.UnassignedResource.Key;

//添加
WebScheduleInfo1.Activities.Add(appt); }

return true;
}
实质就是循环生成工作安排项目,Add到日历中显示而已
但是问题就出现了,过去的时间无法显示事件。
就是中间的appt.Duration用来控制显示时间。
将来的时间发生的安排,Duration设置成任何数字都可以显示,当天的事件必须设置成小于一天的TiamSpan,而过去的时间则无法显示。强行使用很大的Duration将会导致计划任务事件项目连续在多天内出现
不知道哪位大哥能帮忙解决一下?
一百分求助,先谢谢啦~~~~~~~~~~