例如我們在設置審批流程時,往往需要設置限制時限,例如2天內審核好等等,這時候會遇到休息日,需要把休息日去掉,當然有各種各樣復雜的情況,我們先把問題想得簡單一些,就按普通的休息一整天,全公司都統一休息的方式。
下面是程序的運行效果,主要是把12個月展示在上面,有時候費力一些,黑色部分是表示休息,本想用紅色顯示,但是微軟默認是黑色的,沒能搞定
實現代碼可以參考
//-------------------------------------------------------------------- // All Rights Reserved ,Copyright (C) 2012 , Hairihan TECH, Ltd. . //-------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Windows.Forms; using DotNet.Business; using DotNet.Utilities; namespace DotNet.WinForm { public partial class FrmHolidays : BaseForm { public FrmHolidays() { InitializeComponent(); } private void GetYearList() { // 綁定最近幾年就可以了 for (int i = DateTime.Now.Year - 3; i < DateTime.Now.Year + 2; i++) { this.cmbYear.Items.Add(i.ToString()); } // 今年為默認選中 this.cmbYear.SelectedIndex = this.cmbYear.Items.Count - 2; } private void FrmHolidays_Load(object sender, EventArgs e) { this.GetYearList(); } /// <summary> /// 獲取節假日 /// </summary> /// <param name="holiday">當前點中了某個日期了</param> private void GetYearDas(string holiday = null) { BaseHolidaysManager manager = new BaseHolidaysManager(this.UserInfo); if (!string.IsNullOrEmpty(holiday)) { int returnValue = manager.Delete(new KeyValuePair<string, object>(BaseHolidaysEntity.FieldHoliday, holiday)); if (returnValue == 0) { manager.AddHoliday(holiday, false); } } int year = int.Parse(this.cmbYear.SelectedItem.ToString()); this.mc.Enabled = false; if (this.mc.MinDate.Year <= year) { this.mc.MaxDate = new DateTime(year, 12, 31); this.mc.MinDate = new DateTime(year, 1, 1); } else { this.mc.MinDate = new DateTime(year, 1, 1); this.mc.MaxDate = new DateTime(year, 12, 31); } this.mc.Enabled = true; // 把這一年的變粗的都加上來,這個是后臺處理程序,所以沒考慮數據庫性能的問題,每次都讀取了一下,有需要時可以改進一下 string where = BaseHolidaysEntity.FieldHoliday + " >= '" + this.mc.MinDate.ToString(BaseSystemInfo.DateFormat) + "'" + " AND " + BaseHolidaysEntity.FieldHoliday + " <= '" + this.mc.MaxDate.ToString(BaseSystemInfo.DateFormat) + "'"; List<BaseHolidaysEntity> listEntity = manager.GetList<BaseHolidaysEntity>(where); List<DateTime> boldedDates = new List<DateTime>(); foreach (BaseHolidaysEntity entity in listEntity) { boldedDates.Add(DateTime.Parse(entity.Holiday)); } this.mc.BoldedDates = boldedDates.ToArray(); } private void cmbYear_SelectedIndexChanged(object sender, EventArgs e) { // 從數據庫里讀取出來節假日的設置 GetYearDas(); } private void btnInitializeYear_Click(object sender, EventArgs e) { BaseHolidaysManager manager = new BaseHolidaysManager(this.UserInfo); // 這里把周日,知道的5.1. 10.1 等節日進行休息日設置 int year = int.Parse(this.cmbYear.SelectedItem.ToString()); DateTime startDate = new DateTime(year, 1, 1); while (startDate.Year == year) { // 周六周日是默認休息日 if (startDate.DayOfWeek == DayOfWeek.Saturday || startDate.DayOfWeek == DayOfWeek.Sunday) { manager.AddHoliday(startDate.ToString(BaseSystemInfo.DateFormat)); } // 5.1 是休息日 // 10.1 是休息日 startDate = startDate.AddDays(1); } // 從數據庫里讀取出來節假日的設置 GetYearDas(); } private void mc_DateSelected(object sender, DateRangeEventArgs e) { GetYearDas(this.mc.SelectionStart.ToString(BaseSystemInfo.DateFormat)); } } }
創新互聯www.cdcxhl.cn,專業提供香港、美國云服務器,動態BGP最優骨干路由自動選擇,持續穩定高效的網絡助力業務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統配攻擊溯源,準確進行流量調度,確保服務器高可用性。佳節活動現已開啟,新人活動云服務器買多久送多久。
標題名稱:節假日批量設置的C#.NET程序代碼參考-創新互聯
分享地址:http://vcdvsql.cn/article26/dcphjg.html
成都網站建設公司_創新互聯,為您提供做網站、建站公司、電子商務、面包屑導航、Google、商城網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯