节假日批量设置的C#.NET程序代码参考-创新互联
例如我们在设置审批流程时,往往需要设置限制时限,例如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();
}
///
/// 获取节假日
///
/// 当前点中了某个日期了
private void GetYearDas(string holiday = null)
{
BaseHolidaysManager manager = new BaseHolidaysManager(this.UserInfo);
if (!string.IsNullOrEmpty(holiday))
{
int returnValue = manager.Delete(new KeyValuePair(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 listEntity = manager.GetList(where);
List boldedDates = new List();
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程序代码参考-创新互联
URL标题:http://www.jxjierui.cn/article/dcphjg.html


咨询
建站咨询
