日期:2014-05-18  浏览次数:20510 次

问一个让我头疼3天的问题.关于日期控件
首先我感谢看贴子的人,有点麻烦.有时间的朋友详细看下.

日期控件高级应用问题.我做的是一个添加公休日的界面.
我自己改写了日期控件Calendar,
HTML代码如下:
<table>
<tr>
  <td align="right" colspan="8" style="height: 1px">
  年:<asp:TextBox ID="txtYear" runat="server" MaxLength="4" CssClass="TextBox" ></asp:TextBox>
  月:<asp:DropDownList ID="dropMonth" runat="server" CssClass="DropDownList" OnSelectedIndexChanged="dropMonth_SelectedIndexChanged" AutoPostBack="True">
  <asp:ListItem Value="01">一月</asp:ListItem>
  <asp:ListItem Value="02">二月</asp:ListItem>
  <asp:ListItem Value="03">三月</asp:ListItem>
  <asp:ListItem Value="04">四月</asp:ListItem>
  <asp:ListItem Value="05">五月</asp:ListItem>
  <asp:ListItem Value="06">六月</asp:ListItem>
  <asp:ListItem Value="07">七月</asp:ListItem>
  <asp:ListItem Value="08">八月</asp:ListItem>
  <asp:ListItem Value="09">九月</asp:ListItem>
  <asp:ListItem Value="10">十月</asp:ListItem>
  <asp:ListItem Value="11">十一月</asp:ListItem>
  <asp:ListItem Value="12">十二月</asp:ListItem>
  </asp:DropDownList>
  </td>
  </tr>
<asp:Calendar ID="Calendar1" runat="server" Height="600px" NextMonthText="下一月" OnDayRender="Calendar1_DayRender" SelectedDate="<%# GetDate() %>" PrevMonthText="上一月" Width="100%" SelectionMode="None" ForeColor="Black" OnSelectionChanged="Calendar1_SelectionChanged" Font-Size="10pt" BackColor="Gainsboro" BorderColor="Black" Font-Names="Times New Roman" ShowTitle="False" DayNameFormat="Full" NextPrevFormat="FullMonth" TitleFormat="Month" ShowGridLines="True">其他样式(略)</asp:Calendar>
</table>
我实现的是在日期控件上点选日期,并为此天选择休假类型(1假日2法定假日)和备注(remark)

数据表字段为: YY(年) MM(月) DD(日) HolidayKind(休假类型) Remark(备注) 我定义的都为String型 实现添加假日记录

页面后台:首先实例化MODEL实体类 和 BLL

HolidaySet holidayset = new HolidaySet();
HolidaysSetModel holidaysetModel = new HolidaysSetModel();
private static DateTime date = new DateTime();

后台定义了OnDayRender="Calendar1_DayRender"事件
代码如下:
 protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
  {
  //获取表示在日历控件中的日期CalendarDay
  CalendarDay d = ((DayRenderEventArgs)e).Day;
  //获取表示在日历控件中单元格的TableCell
  TableCell c = ((DayRenderEventArgs)e).Cell;
  //生成单元格的日期是否属于显示的月份,如果不属于显示的月份,则清除此单元格里的内容
  if (d.IsOtherMonth)
  {
  c.Controls.Clear();
  }
  else
  {
  try
  {
  DateTime dt = d.Date;
   
  //显示超连接,自定义一个HyperLink,并设置好属性
  HyperLink aHyperLink = new HyperLin