ASP.NET中如何实现弹出日历
创始人
2024-11-28 08:01:44
0次

代码如下:

<%@ Control Language="c#" AutoEventWireup="false" Codebehind="ctlCalendar.ascx.cs" Inherits="calendar.ctlCalendar" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" enableViewState="True"%>


                     

cs代码

namespace calendar
{
 using System;
 using System.Data;
 using System.Drawing;
 using System.Web;
 using System.Web.UI.WebControls;
 using System.Web.UI.HtmlControls;
 /// 
 /// ctlCalendar 的摘要说明。
 /// 
 public class ctlCalendar : System.Web.UI.UserControl
 {
 protected System.Web.UI.WebControls.TextBox TextBox1;
 protected System.Web.UI.WebControls.Panel pnlCalendar;
 protected System.Web.UI.HtmlControls.HtmlInputButton Button1;
 protected System.Web.UI.WebControls.Calendar Calendar1;
 private void Page_Load(object sender, System.EventArgs e)
 {
  // 在此处放置用户代码以初始化页面
  if (!Page.IsPostBack)
  {
  this.TextBox1.Text = System.DateTime.Now.ToShortDateString();
  this.pnlCalendar.Attributes.Add("style","DISPLAY: none; POSITION: absolute");
  }
  else
  {
  string id = Page.Request.Form["__EVENTTARGET"].Substring(0,Page.Request.Form["__EVENTTARGET"].IndexOf(":"));
  if (id != this.ID) 
  {
   this.pnlCalendar.Attributes.Add("style","DISPLAY: none; POSITION: absolute");
  }
  else
  {
   this.pnlCalendar.Attributes.Add("style","POSITION: absolute");
  }
  }
  Page.RegisterClientScriptBlock("Script_Panel" + this.ID,
  "");  
  this.Button1.Attributes.Add("OnClick","On"+this.ID+"Click()");
 }
 #region Web 窗体设计器生成的代码
 override protected void OnInit(EventArgs e)
 {
  //
  // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
  //
  InitializeComponent();
  base.OnInit(e);
 }
 /// 
 /// 设计器支持所需的方法 - 不要使用代码编辑器
 /// 修改此方法的内容。
 /// 
 private void InitializeComponent()
 {
  this.Calendar1.SelectionChanged += new System.EventHandler(this.Calendar1_SelectionChanged);
  this.Load += new System.EventHandler(this.Page_Load);
 }
 #endregion
 #region 日历选择时的事件
 private void Calendar1_SelectionChanged(object sender, System.EventArgs e)
 {
  this.TextBox1.Text = Calendar1.SelectedDate.ToShortDateString();
  this.pnlCalendar.Attributes.Add("style","DISPLAY: none; POSITION: absolute");
 }
 #endregion
 }
}

好了下面结果js+.net实现弹出日历

在需要调用日期选择的页面放置两个TEXTBOX与BUTTON以选择开始时间与结束时间,并在html代码的 之前加入如下

javascript语句:

 
   function openModeBegin() 
   { 
   var returnValue=window.showModalDialog("CalendarForm2.aspx",Form1.TextBoxBeginDate.value);
   Form1.TextBoxBeginDate.value=returnValue; 
   } 
  
  
   function openModeEnd() 
   { 
   var returnValue=window.showModalDialog("CalendarForm2.aspx",Form1.TextBoxEndDate.value); 
   Form1.TextBoxEndDate.value=returnValue; 
   } 
 

以上语句定义了两个模态对话框,当调用模态对话框时打开CalendarForm2.aspx页面选择日期,本页面窗体FORM名称为Form1,两个TextBox分别接收传递进来的两个时间值而且应该能互不影响。注意html中窗体的定义应该与javascript中定义的对应并且应该是服务器端运行的,如

。

在本页面WebForm1.aspx.cs代码部分页面加载Page_Load事件内加入如下语句将定义的javascript行为赋予Button:
  

ButtonBeginDate.Attributes.Add("onclick", "openModeBegin()"); 
  ButtonEndDate.Attributes.Add("onclick", "openModeEnd()");

CalendarForm2.aspx是个临时容器,提供框架调用CalendarForm3.aspx的内容,以备关掉日期选择窗体后无法完成传值,在其html的Head标记之间应该加入如下语句:

代码如下:

 
 
 

CalendarForm2.aspx.cs文件中亦不需要写任何代码,只需在body标记之间加入如下代码: 

代码如下:

 
  
   
  

CalendarForm3.aspx我们实际用到的日期选择页面包含一个日历控件与一个Button一个TextBox,此处直接将日历控件Calendar的选定值传给第一个页面WebForm1.aspx更简单,但我们没有这样做,不直接传值主要是考虑到大多数用户的使用习惯,在此将日历控件选中的值传给页面上的TextBox,按下Button后再传给WebForm1.aspx,还可以在用户误选后容易纠正。

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...