视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
ASP.NET中实现弹出日历示例
2020-11-27 22:36:23 责编:小采
文档


在.net中弹出日历的方法有很多种,这里介绍直接使用.net来实例,我们当然还可以使用js日历来实例哦,下面我分别简单举两个实例吧。有需要的朋友可以了解一下。

代码如下:

<%@ Control Language="c#" AutoEventWireup="false" Codebehind="ctlCalendar.ascx.cs" Inherits="calendar.ctlCalendar" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" enableViewState="True"%>
<asp:textbox id="TextBox1" runat="server"></asp:textbox>
<input type="button" id="Button1" runat="server" value="..."><br>
<asp:Panel id="pnlCalendar" runat="server" style="POSITION: absolute">
 <asp:calendar id="Calendar1" runat="server" FirstDayOfWeek="Monday" ShowGridLines="True" BackColor="White"
 DayNameFormat="Full" ForeColor="Black" Font-Size="8pt" Font-Names="Verdana" BorderColor="#999999"
 CellPadding="4" Width="200px" Height="180px">
 <TodayDayStyle ForeColor="Black" BackColor="#CCCCCC"></TodayDayStyle>
 <SelectorStyle BackColor="#CCCCCC"></SelectorStyle>
 <DayStyle Wrap="False" BorderStyle="Dashed"></DayStyle>
 <NextPrevStyle VerticalAlign="Bottom"></NextPrevStyle>
 <DayHeaderStyle Font-Size="X-Small" Font-Names="宋体" Wrap="False" BorderStyle="Dashed" BackColor="#CCCCCC"></DayHeaderStyle>
 <SelectedDayStyle Font-Bold="True" ForeColor="White" BackColor="#666666"></SelectedDayStyle>
 <TitleStyle Font-Size="Small" Font-Bold="True" BorderStyle="Solid" BorderColor="Black" BackColor="#999999"></TitleStyle>
 <WeekendDayStyle BackColor="LightSteelBlue"></WeekendDayStyle>
 <OtherMonthDayStyle ForeColor="Gray"></OtherMonthDayStyle>
 </asp:calendar>
</asp:Panel>

cs代码

namespace calendar
{
 using System;
 using System.Data;
 using System.Drawing;
 using System.Web;
 using System.Web.UI.WebControls;
 using System.Web.UI.HtmlControls;
 /// <summary>
 /// ctlCalendar 的摘要说明。
 /// </summary>
 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,
 "<script> function On"+this.ID+"Click() { if("+this.ID+
"_pnlCalendar.style.display == "none") "+this.ID+
"_pnlCalendar.style.display = ""; else "+this.ID+
"_pnlCalendar.style.display = "none"; } </script>"); 
 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);
 }
 /// <summary>
 /// 设计器支持所需的方法 - 不要使用代码编辑器
 /// 修改此方法的内容。
 /// </summary>
 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代码的 </body>之前加入如下

javascript语句:

<script language="javascript"> 
 function openModeBegin() 
 { 
 var returnValue=window.showModalDialog("CalendarForm2.aspx",Form1.TextBoxBeginDate.value);
 Form1.TextBoxBeginDate.value=returnValue; 
 } 
 </script> 
 <script language="javascript"> 
 function openModeEnd() 
 { 
 var returnValue=window.showModalDialog("CalendarForm2.aspx",Form1.TextBoxEndDate.value); 
 Form1.TextBoxEndDate.value=returnValue; 
 } 
 </script>

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

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

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

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

代码如下:

<script id="clientEventHandlersJS" language="javascript"> 
<!-- 
function IFRAME1_onblur() {} 
//--> 
 </script>

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

代码如下:

<body runat="server" ID="Body1"> 
 <form id="Form1" method="post" runat="server"> 
 <iframe frameborder="no" src='CalendarForm3.aspx' style="WIDTH: 480px; HEIGHT: 450px" id="IFRAME1" 
 language="javascript" onblur="return IFRAME1_onblur()"></iframe> 
 </form> 
</body>

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

下载本文
显示全文
专题