当前位置导航:炫浪网>>网络学院>>编程开发>>Visual C#教程

C#高级编程:定制日历控件

  在把会议添加到数据库中之前,先修改一下日历的显示。最好用另一种颜色显示登记之前的日期,以防该日期被选中。这要求修改我们在日历中设置日期的方式,以及日期单元格的显示方式。

  首先是日期选择。有3个地方需要查看会议登记的日期,并修改相应选择:一是在Page_ Load()中设置初始日期时,第二是在用户试图从日历中选择日期时,第三情况是登记一个会议,并设置一个新的日期,以防用户在选择新日期前,在同一天连续登记两个会议。这些都是很常见的情况,也可以创建一个私有方法来执行这个计算。这个方法应接受一个试用日期作为参数,并返回要使用的日期,该日期与试用日期相同,也可以是试用日期之后的某个日期。

  把这个getFreeDate()方法添加到后台编码文件中:

  private System.DateTime getFreeDate(System.DateTime trialDate)

  {

  if (eventTable.Rows.Count >0)

  {

  System.DateTime testDate;

  bool trialDateOK = false;

  while (!trialDateOK)

  {

  trialDateOK = true;

  foreach (System.Data.DataRow testRow in eventTable.Rows)

  {

  testDate = (System.DateTime)testRow["EventDate"];

  if (testDate.Date == trialDate.Date)

  {

  trialDateOK = false;

  trialDate = trialDate.AddDays(1);

  }

  }

  }

  }

  return trialDate;

  }

  这段简单的代码使用在Page_Load()中填充的对象eventTable提取会议数据。首先看看一般情况:没有登记任何会议,此时返回该试用日期,以确认该日期,接着对Event表中的日期进行迭代,把该日期与试用日期比较。如果找到一个匹配,就给试用日期加一天,执行另一次搜索。

  从DataTable中提取数据是相当简单的:testDate = (System.DateTime)testRow["EventDate"];

  把列数据转换为Sytem.DateTime,这样会更精确。

  使用getFreeDate()的第一个地方是在Page_Load()后面。这意味只需对设置SelectedDate属性的代码稍加修改:

  if (!this.IsPostBack)

  {

  System.DateTime trialDate = System.DateTime.Now;

  calendar.SelectedDate = getFreeDate(trialDate);

  this.DataBind();

  }

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接