首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

问一个让小弟我头疼3天的有关问题.关于日期控件

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

问一个让我头疼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 HyperLink();
  aHyperLink.ImageUrl = "~/images/add_small.gif";
  aHyperLink.ToolTip = "设置假日?";


  //aHyperLink.NavigateUrl = "#?day=" + d.Date.ToShortDateString(); 这个跳转页面只是单条记录添加,已经实现,不想用这方法.

  string day2 = d.Date.ToShortDateString();
  aHyperLink.Attributes.Add("onclick", "AddHolidayset('" + day2 + "')");
  btnClose.Attributes.Add("onclick", "HideFlyBar(); return false;");


  //将HyperLink加到日历控件上去
  c.Controls.Add(new LiteralControl("&nbsp;" + "&nbsp;" + "&nbsp;" + "&nbsp;"));
  c.Controls.Add(aHyperLink);
  }
  catch (Exception exc)
  {
  Response.Write(exc.ToString());
  }

  HolidaySet holidayset = new HolidaySet(); //实例化业务逻辑
  HolidaysSetModel holidaysetModel = new HolidaysSetModel(); //实力化实体
  DataSet ds = holidayset.LookHolidaySetInfo(holidaysetModel); 

  DataRow[] dr;
  dr = ds.Tables[0].Select("YY='" + txtYear.Text + "'and MM='" + dropMonth.SelectedValue + "' and DD='" + d.DayNumberText + "'");
  holidaysetModel.YY = txtYear.Text.Replace("'", "");
  holidaysetModel.MM = dropMonth.SelectedValue;
  holidaysetModel.DD = d.DayNumberText;

  bool ExistHoliday = holidayset.ExistHoliday(holidaysetModel);

  if (ExistHoliday)
  {
  string HText = dr[0]["HolidaysKind"].ToString();
  string bb = dr[0]["ReMark"].ToString();
  Label a = new Label();

  if (HText == "1")
  {
  a.Text = "假日" + "---" + bb;
  }
  else if (HText == "2")
  {
  a.Text = "法定假日" + "---" + bb;
  }
  c.Controls.Add(a);
  c.Controls.Add(new LiteralControl("<br>"));
  }
  }
}
我想实现点最终提交按钮的时候,把日期控件上对应日期的直一起存如数据库中.
但是protected void btnADD_Click(object sender, EventArgs e)事件中 不能实现用((lable)Calendar1.FindControl("控件ID")).Text这种方法

-----------------------------------------------------------
所以我做了点击日期时候弹出DIV层里面添加休假类型和备注 然后点确定 把类型和备注用lable保存在日期控件上并显示.
protected void btnOk_Click(object sender, EventArgs e)
  {
  string a = hd1.Value;
  DateTime dt = Convert.ToDateTime(a); /取到点击的日期

  DataTable dts;
  if (Session["datatable"] == null)
  {
  dts = CreateTable();
  Session["datatable"] = dts;
  }  
  dts = Session["datatable"] as DataTable;
  DataRow dr = dts.NewRow();

  dr[0] = txtYear.Text.Replace("'", "");
  dr[1] = dropMonth.SelectedValue;
  dr[2] = dt.Day.ToString();
  dr[3] = ddlHolidaysKind.SelectedValue;
  dr[4] = txtRemark.Text;  
  dts.Rows.Add(dr);
  Session["datatable"] = dts;
  }

上面这里我想到了建DataTable把数据暂时存DataTable中,用session保存.最后提交直接去取Datatable中的数据. 这遇到问题了,此方法能实现添加一个日期并显示在控件的对应日期上,但是当再添加其他日期的时候就显示不出了.数据都集中存在datatabel中.但是界面上显示不出标记,是否这天已添加,看不出来.

有没有高手指点下,我应该用什么方法,才能实现这个页面,多条记录添入数据表中啊并且完美些. 我现在这方法行的通么?错在哪?还有什么好方法吗? 谢谢,指点下小弟.感激不尽!



在线等.......

[解决办法]
怎么不先选择日期的时候传给一个控件或者变量先??
[解决办法]

C# code
                Label a = new Label(); //这个备注移上来,这个会生成span//显示超连接,自定义一个HyperLink,并设置好属性                    HyperLink aHyperLink = new HyperLink();                 aHyperLink.ImageUrl = "~/images/add_small.gif";                 aHyperLink.ToolTip = "设置假日?";                 //aHyperLink.NavigateUrl = "#?day=" + d.Date.ToShortDateString(); 这个跳转页面只是单条记录添加,已经实现,不想用这方法.                 string day2 = d.Date.ToShortDateString();                 aHyperLink.Attributes.Add("onclick", "AddHolidayset( '" + day2 + " ','" + a.ClientID + "')"); //这里把Label的iD传进去                btnClose.Attributes.Add("onclick", "HideFlyBar(); return false;");           if (ExistHoliday)             {                 string HText = dr[0]["HolidaysKind"].ToString();                 string bb = dr[0]["ReMark"].ToString();                 if (HText == "1")                 {                     a.Text = "假日" + "---" + bb;                 }                 else if (HText == "2")                 {                     a.Text = "法定假日" + "---" + bb;                 }                 c.Controls.Add(a);                 c.Controls.Add(new LiteralControl(" <br >"));             }                        弹出层里添加直接加到数据库,不要用Session保存,不过在关闭层时要调用脚本将填写的备注值 对备注Label进行更改
[解决办法]
jf
代码看着累
[解决办法]

[解决办法]
也在做一個行事曆,也與道類似問題..樓主加油...
[解决办法]
太幸福了!
我最近做的项目中就是遇见这个难题了,没想到在这里看见了,先顶,然后慢慢拜读!
有不懂的地方希望楼主赐教!
[解决办法]
jf
[解决办法]

[解决办法]
你要的是每天都有信息提示的日历不?
我刚好做过
建议你不要用自带的日历控件
自己画出来一个
问题就解决了

热点排行