c#

位置:IT落伍者 >> c# >> 浏览文章

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


发布日期:2024年07月28日
 
C#高级编程:定制日历控件[1]
——此文章摘自《C#高级编程(第版)》定价元 特价元 购买

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

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

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

private SystemDateTime getFreeDate(SystemDateTime trialDate)

{

if (eventTableRowsCount > )

{

SystemDateTime testDate;

bool trialDateOK = false;

while (!trialDateOK)

{

trialDateOK = true;

foreach (SystemDataDataRow testRow in eventTableRows)

{

testDate = (SystemDateTime)testRow[EventDate];

if (testDateDate == trialDateDate)

{

trialDateOK = false;

trialDate = trialDateAddDays();

}

}

}

}

return trialDate;

}

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

从DataTable中提取数据是相当简单的testDate = (SystemDateTime)testRow[EventDate];

把列数据转换为SytemDateTime这样会更精确

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

if (!thisIsPostBack)

{

SystemDateTime trialDate = SystemDateTimeNow;

calendarSelectedDate = getFreeDate(trialDate);

thisDataBind();

}

[] []

               

上一篇:C#线程池的实现

下一篇:C#高级编程:定制日历控件[2]