定制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;
- trialDatetrialDate = 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();
- }
接着需要响应日历上的日期选择。为此,需要先为日历的SelectionChanged事件添加一个事件处理程序,强制检查现有会议的日期。双击设计器中的C#日历控件,添加如下代码:
- private void calendar_SelectionChanged(object sender
- System.EventArgs e){
- System.DateTime trialDate = calendar.SelectedDate;
- calendar.SelectedDate = getFreeDate(trialDate);
- }
这段代码与Page_Load()相同。
执行这种检查的第三个地方是响应登记按钮的单击。后面会解释它,因为后面进行了许多改变。
接着把日历的日期单元格变为另一种颜色,以表示现存的会议。为此,需要给日期对象的DayRender事件添加一个事件处理程序。每次显示一个日期时,都会触发这个事件,并允许通过在处理程序中接收到的DayRenderEventArgs参数的Cell 和 Date属性,访问要显示的单元格对象和这个单元格的日期。我们需要比较要显示的单元格中的日期和eventTable对象中的日期,如果匹配,就可以使用Cell.BackColor属性为单元格着色:
- protected void calendar_DayRender(object sender,
- System.Web.UI.WebControls.DayRenderEventArgs e){
- if (eventTable.Rows.Count >0){
- System.DateTime testDate;
- foreach (System.Data.DataRow testRow in eventTable.Rows){
- testDate = (System.DateTime)testRow["EventDate"];
- if (testDate.Date == e.Day.Date){
- e.Cell.BackColor = Color.Red;
- }
- }
- }
- }
以上介绍定制C#日历控件
网页名称:C#日历控件的定制步骤
地址分享:http://www.shufengxianlan.com/qtweb/news1/548101.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联