1

我想在 c#.net 中生成日历以输入每日出勤率。我在 web 中使用 jquery 日历用于类似目的。有什么方法可以创建日历控件并获取点击事件来标记和显示其中的值。

谢谢

示例图片:

在此处输入图像描述

4

2 回答 2

2

如果您有预算,我肯定会选择Telerik 的 Scheduler Control 之类的商业组件。该系列的价格为 999 美元,我以前从未使用过 Telerik 的控件,所以我自己不能推荐它们,但从长远来看,如果您可以在其他项目中重用这些组件,从长远来看它可能是非常值得的。

如果这不是一个选项,那么像您的示例这样简单的东西将很容易自己滚动。我主要在 WinForms 中工作,所以这就是我构建表单的方式:

  1. 创建自定义控件以显示任何给定的日期。您将需要在上角为一个月中的某天添加一个标签,以及一个用于显示当天文本(进/出时间)的标签。也许添加一个边框。
  2. 创建将包含日历的表单或控件
  3. 使用您的月份和年份控件添加一个停靠在顶部的工具条。使用组合框或下拉按钮。
  4. 添加一个停靠在顶部的薄面板并添加日期标签。确定您希望每列的宽度并根据该宽度定位标签。
  5. 添加一个FlowLayoutPanel并设置DockFill. 这将包含“日”控件,这些控件将从左到右、从上到下流动。

现在您需要使用代码,而不是设计器。这可能在构造函数、Page_Load处理程序或在设置(或初始化)月份/年份时调用的某个地方完成:

  1. 向 中添加足够的空面板以FlowLayoutControl填充月初。您可以找出要添加的数量,new DateTime(year, month, 1).DayOfWeek以找到该月的第一天。空面板应设置为与“天”控件相同的大小。
  2. 为该月的每一天添加一个day控件。FlowLayoutControl用于DateTime.DayInMonth(year, month)查找所选月份的天数,并在添加时将每个“天”控件设置为日期(可能还有输入/输出数据)。
  3. 现在在“day”控件和填充面板上使用填充和边框,直到一切看起来都正确。您可以在设计器中添加一些测试“日”控件和面板来测试那里的布局,然后调用flowLayoutControl.Items.Clear()设置代码。

这应该会产生一个可以动态显示任何月份的控件。要添加考勤编辑功能,请在“日”控件或日历控件本身中设置Click处理程序(当您将“日”控件FlowLayoutControl添加到/out 选定日期的时间。

如果您希望日控件动态调整大小,请为包含控件的Resize事件注册,并将每天控件的宽度和高度设置为Math.Floor(control.Width / 7)(七天宽)和Math.Floor(control.Height / 5)(五周高)或类似的东西。

于 2011-07-07T11:53:57.687 回答
0

据我所知,市场上没有标准的时间表控制。我建议你看看 DevExpress 的XtraSchedule控件。

于 2011-07-07T10:22:04.920 回答