让Calendar在页面调用时才显示
点击次数:15 次 发布日期:2008-11-26 23:43:09 作者:源代码网
|
源代码网推荐 曾经我看到网上流行的一个用VB.NET写的UserControl实现了这部分功能,在这里我把它改成C#的版本,供需要的朋友下载学习。 源代码网推荐 总的来说这个功能分两步,第一步建立一个UserControl控件: 源代码网推荐它的代码如下(http://www.zzchn.com/edu/20071103/popUpCalendar.ascx): 源代码网推荐<%@ Control Language="c#" AutoEventWireup="false" Codebehind="http://www.zzchn.com/edu/20071103/popUpCalendar.ascx.cs" Inherits="CalendarExample.popUpCalendar" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %> 源代码网推荐<asp:panel id="pnlCalendar" style="Z-INDEX: 101; LEFT: 0px; POSITION: absolute; TOP: 0px" Width="301px" Height="163px" runat="server"> 源代码网推荐<asp:Calendar id="Calendar1" Width="307px" Height="164px" runat="server" BackColor="White" BorderColor="Black" BorderStyle="Solid" NextMonthText="<IMG src="http://www.host01.com/Get/Net/000200011/monthright.gif" border="0">" PrevMonthText="<IMG src="http://www.host01.com/Get/Net/000200011/monthleft.gif" border="0">"> 源代码网推荐 <TodayDayStyle BackColor="#FFFFC0"></TodayDayStyle> 源代码网推荐 <DayStyle Font-Size="8pt" Font-Names="Arial"></DayStyle> 源代码网推荐 <DayHeaderStyle Font-Size="10pt" Font-Underline="True" Font-Names="Arial" BorderStyle="None" BackColor="#E0E0E0"></DayHeaderStyle> 源代码网推荐 <SelectedDayStyle Font-Size="8pt" Font-Names="Arial" Font-Bold="True" ForeColor="White" BackColor="Navy"></SelectedDayStyle> 源代码网推荐 <TitleStyle Font-Size="10pt" Font-Names="Arial" Font-Bold="True" ForeColor="White" BackColor="Navy"></TitleStyle> 源代码网推荐 <OtherMonthDayStyle ForeColor="Gray"></OtherMonthDayStyle> 源代码网推荐</asp:Calendar> 源代码网推荐</asp:panel> 源代码网推荐对就的codebehind文件如下(http://www.zzchn.com/edu/20071103/popUpCalendar.ascx.cs): 源代码网推荐namespace CalendarExample 源代码网推荐{ 源代码网推荐using System; 源代码网推荐using System.Data; 源代码网推荐using System.Drawing; 源代码网推荐using System.Web; 源代码网推荐using System.Web.UI.WebControls; 源代码网推荐using System.Web.UI.HtmlControls; 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐/// <summary> 源代码网推荐/// popUpCalendar 的摘要说明。 源代码网推荐/// </summary> 源代码网推荐public abstract class popUpCalendar : System.Web.UI.UserControl 源代码网推荐{ 源代码网推荐 protected System.Web.UI.WebControls.Calendar Calendar1; 源代码网推荐 protected System.Web.UI.WebControls.Panel pnlCalendar; 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 private void Page_Load(object sender, System.EventArgs e) 源代码网推荐 { 源代码网推荐 // 在此处放置用户代码以初始化页面 源代码网推荐 } 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 #region Web Form Designer generated code 源代码网推荐 override protected void OnInit(EventArgs e) 源代码网推荐 { 源代码网推荐 // 源代码网推荐 // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。 源代码网推荐 // 源代码网推荐 InitializeComponent(); 源代码网推荐 base.OnInit(e); 源代码网推荐 } 源代码网推荐 源代码网推荐 /// 设计器支持所需的方法 - 不要使用 源代码网推荐 /// 代码编辑器修改此方法的内容。 源代码网推荐 /// </summary> 源代码网推荐 private void InitializeComponent() 源代码网推荐 { 源代码网推荐 this.Calendar1.SelectionChanged += new System.EventHandler(this.Calendar1_SelectionChanged); 源代码网推荐 this.Load += new System.EventHandler(this.Page_Load); 源代码网推荐 } 源代码网推荐 #endregion 源代码网推荐 public void displayCalendar( string sCalToolText, DateTime dSelectedDate, string sDateFieldName , int iTop , int iLeft ) 源代码网推荐 { 源代码网推荐 if (pnlCalendar.Visible == false) 源代码网推荐 { 源代码网推荐 pnlCalendar.Style["top"] = iTop.ToString (); 源代码网推荐 pnlCalendar.Style["left"] = iLeft.ToString (); 源代码网推荐 Calendar1.SelectedDate = dSelectedDate; 源代码网推荐 Calendar1.VisibleDate = dSelectedDate; 源代码网推荐 Calendar1.ToolTip = sCalToolText; 源代码网推荐 Calendar1.Attributes["SelectedField"] = sDateFieldName; 源代码网推荐 pnlCalendar.Visible = true; 源代码网推荐 } 源代码网推荐 else 源代码网推荐 hideCalendar(); 源代码网推荐 } 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 public void hideCalendar() 源代码网推荐 { 源代码网推荐 pnlCalendar.Visible = false; 源代码网推荐 } 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 private void Calendar1_SelectionChanged(object sender, System.EventArgs e) 源代码网推荐 { 源代码网推荐 TextBox txtDate; 源代码网推荐 txtDate = (TextBox)Page.FindControl(Calendar1.Attributes["SelectedField"]); 源代码网推荐 txtDate.Text = Calendar1.SelectedDate.ToShortDateString(); 源代码网推荐 hideCalendar(); 源代码网推荐 } 源代码网推荐} 源代码网推荐} 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 第二步,在asp.net文件里调用这个UserControl; 源代码网推荐它的代码如下(dispCalendar.aspx): 源代码网推荐<%@ Register TagPrefix="sk" TagName="popUpCalendar" src="http://www.zzchn.com/edu/20071103/popUpCalendar.ascx"%> 源代码网推荐<%@ Page language="c#" Codebehind="dispCalendar.aspx.cs" AutoEventWireup="false" Inherits="CalendarExample.WebForm1" %> 源代码网推荐<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 源代码网推荐<HTML> 源代码网推荐<HEAD> 源代码网推荐 <title>WebForm1</title> 源代码网推荐 <meta content="Microsoft Visual Studio 7.0" name="GENERATOR"> 源代码网推荐 <meta content="C#" name="CODE_LANGUAGE"> 源代码网推荐 <meta content="Javascript" name="vs_defaultClientscript"> 源代码网推荐 <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema"> 源代码网推荐</HEAD> 源代码网推荐<body MS_POSITIONING="GridLayout"> 源代码网推荐 <form id="Form1" method="post" runat="server"> 源代码网推荐 <sk:popupcalendar id="myCalendar" runat="server"></sk:popupcalendar> 源代码网推荐 <table> 源代码网推荐 <tr> 源代码网推荐 <td width="75"> 源代码网推荐 Select Date: 源代码网推荐 </td> 源代码网推荐 <td> 源代码网推荐 <asp:TextBox id="txtStartDate" runat="server" Width="86px"></asp:TextBox> 源代码网推荐 </td> 源代码网推荐 <td> 源代码网推荐 <asp:ImageButton id="Button1" runat="server" ImageUrl="calendar.gif"></asp:ImageButton> 源代码网推荐 </td> 源代码网推荐 </tr> 源代码网推荐 </table> 源代码网推荐 </form> 源代码网推荐</body> 源代码网推荐</HTML> 源代码网推荐对应的codebehind文件如下(dispCalendar.aspx.cs): 源代码网推荐using System; 源代码网推荐using System.Collections; 源代码网推荐using System.ComponentModel; 源代码网推荐using System.Data; 源代码网推荐using System.Drawing; 源代码网推荐using System.Web; 源代码网推荐using System.Web.SessionState; 源代码网推荐using System.Web.UI; 源代码网推荐using System.Web.UI.WebControls; 源代码网推荐using System.Web.UI.HtmlControls; 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐namespace CalendarExample 源代码网推荐{ 源代码网推荐/// <summary> 源代码网推荐/// WebForm1 的摘要说明。 源代码网推荐/// </summary> 源代码网推荐public class WebForm1 : System.Web.UI.Page 源代码网推荐{ 源代码网推荐 protected System.Web.UI.WebControls.TextBox txtStartDate; 源代码网推荐 protected System.Web.UI.WebControls.ImageButton Button1; 源代码网推荐 protected popUpCalendar myCalendar; 源代码网推荐 源代码网推荐 private void Page_Load(object sender, System.EventArgs e) 源代码网推荐 { 源代码网推荐 if (!IsPostBack) 源代码网推荐 myCalendar.hideCalendar();// 在此处放置用户代码以初始化页面 源代码网推荐 } 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 #region Web Form Designer generated code 源代码网推荐 override protected void OnInit(EventArgs e) 源代码网推荐 { 源代码网推荐 // 源代码网推荐 // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。 源代码网推荐 // 源代码网推荐 InitializeComponent(); 源代码网推荐 base.OnInit(e); 源代码网推荐 } 源代码网推荐 源代码网推荐 /// <summary> 源代码网推荐 /// 设计器支持所需的方法 - 不要使用代码编辑器修改 源代码网推荐 /// 此方法的内容。 源代码网推荐 /// </summary> 源代码网推荐 private void InitializeComponent() 源代码网推荐 { 源代码网推荐 this.Button1.Click += new System.Web.UI.ImageClickEventHandler(this.Button1_Click); 源代码网推荐 this.Load += new System.EventHandler(this.Page_Load); 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 } 源代码网推荐 #endregion 源代码网推荐 源代码网推荐 private void Button1_Click(object sender, System.Web.UI.ImageClickEventArgs e) 源代码网推荐 { 源代码网推荐 DateTime dSelDate; 源代码网推荐 try 源代码网推荐 { 源代码网推荐 dSelDate=DateTime.Parse(txtStartDate.Text); 源代码网推荐 } 源代码网推荐 catch 源代码网推荐 { 源代码网推荐 dSelDate=DateTime.Now; 源代码网推荐 } 源代码网推荐 myCalendar.displayCalendar("Select a start date", dSelDate,"txtStartDate", 22, 215); 源代码网推荐 } 源代码网推荐} 源代码网推荐} 源代码网供稿. |
