ASP.NET工程中日历控件的典型应用之一

原创 2003年04月08日 09:04:00

很多朋友问我,如何动态选择日期呢,如何选择完日期以后,关闭本页同时把日期传入上一页呢?这个问题也曾经困扰我许久,在ASP中我知道如何做,可是在ASP.NET中却有点迷惑。

为此,我查阅了很多的资料,终于研究通了,现在分享给大家。

源代码如下:calendar.aspx.cs

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
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 WebApplication_rd
{
 /// <summary>
 /// Summary description for WebForm1.
 /// </summary>
 public class calendar : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.Label Label1;
  protected System.Web.UI.WebControls.DataGrid DataGrid1;
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   if (! Page.IsPostBack)
    BindData();
  }

  private void BindData()
  {
   SqlConnection con = new SqlConnection("server=localhost;database=Northwind;uid=sa;pwd=;");
   SqlCommand cmd = new SqlCommand("SELECT TOP 10 * FROM Orders", con);

   try
   {
    con.Open();
    DataGrid1.DataSource = cmd.ExecuteReader();
    DataGrid1.DataBind();
    con.Close();
   }
   catch (Exception ex)
   {
    Trace.Warn(ex.Message);
   }
  }


  #region Web Form Designer generated code
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: This call is required by the ASP.NET Web Form Designer.
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// Required method for Designer support - do not modify
  /// the contents of this method with the code editor.
  /// </summary>
  private void InitializeComponent()
  {   
   this.DataGrid1.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_CancelItemCommand);
   this.DataGrid1.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_EditItemCommand);
   this.DataGrid1.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_UpdateItemCommand);
   this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_OnItemDataBound);
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion

  private void DataGrid1_EditItemCommand(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e)
  {
   DataGrid1.EditItemIndex = e.Item.ItemIndex;
   BindData();
  }

  private void DataGrid1_CancelItemCommand(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e)
  {
   DataGrid1.EditItemIndex = -1;
   BindData();
  }

  private void DataGrid1_UpdateItemCommand(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e)
  {
   Int32 iLastCellIndex = e.Item.Cells.Count-1; //The Index for the last cell
   String sNewDate = ((TextBox)e.Item.Cells[iLastCellIndex].FindControl("txtDate")).Text; //Get the value of the TextBox
   Label1.Text = "You set the date " + sNewDate;
   //Add database updating here
   DataGrid1.EditItemIndex = -1;
   BindData();
  }

  private void DataGrid1_OnItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  {
   if ( e.Item.ItemType == ListItemType.EditItem )
   {
    Int32 iLastCellIndex = e.Item.Cells.Count-1; //The Index for the last cell
    String sTextBoxName = e.Item.Cells[iLastCellIndex].FindControl("txtDate").ClientID; //The rendered name of the TextBox
    String sLink = "<a href=/"javascript:pickDate('" +
     sTextBoxName +
     "');/"><IMG SRC=/"i/iCalendar.gif/" border=/"0/" align=/"absmiddle/"></a>"; //The HTML to add to the Edit cell
    e.Item.Cells[iLastCellIndex].Controls.Add(new LiteralControl(sLink)); //Add the HTML
   }
  }

 }
}


CalendarPopUp.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 WebApplication_rd
{
 /// <summary>
 /// Summary description for CalendarPopUp.
 /// </summary>
 public class CalendarPopUp : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.LinkButton LinkButton1;
  protected System.Web.UI.WebControls.Calendar Calendar1;
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   // Put user code to initialize the page here
  }

  #region Web Form Designer generated code
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: This call is required by the ASP.NET Web Form Designer.
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// Required method for Designer support - do not modify
  /// the contents of this method with the code editor.
  /// </summary>
  private void InitializeComponent()
  {   
   this.LinkButton1.Click += new System.EventHandler(this.LinkButton1_Click);
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion

  private void LinkButton1_Click(object sender, System.EventArgs e)
  {
      System.Text.StringBuilder sbScript  = new System.Text.StringBuilder();
   sbScript.Append("<script language='javascript'>"); //Opening script tag
   sbScript.Append(Environment.NewLine); //Newline
   sbScript.Append("window.opener.document.all['"); //Reference to original window
   sbScript.Append(Request.QueryString["src"]); //Control to set value on
   sbScript.Append("'].value = '"); //Set the value
   sbScript.Append(Calendar1.SelectedDate.ToShortDateString()); //The date
   sbScript.Append("';"); //End of line
   sbScript.Append(Environment.NewLine); //Newline
   sbScript.Append("window.close();"); //Close this window
   sbScript.Append(Environment.NewLine); //Newline
   sbScript.Append("</script>"); //Closing script tag

   //Add the script to the page
   this.Page.Controls.Add(new LiteralControl(sbScript.ToString()));
  }
 }
}

 

 

自定义.NET Calarder日历控件(实现博客园日历)

这几天看了下.net 日历控件,去Google了下出来很多,大家都知道.netframework版本中自带的日历控件只有日期没有备注的,比如我在1月1日下面要显示出‘元旦节’这三个字,那要怎么做呢? ...
  • jason_dct
  • jason_dct
  • 2013年01月15日 20:23
  • 5703

asp.net中为Calendar日历控件添加双击日期事件

最近一直在做日历控件,希望能直接在上面双击具体某一天就能弹窗添加事件,刚开始是想在网上找找人家做好的日历控件来用的,后面发现由于公司加密软件的原因,那些插件基本上都用不了,最后没法子了,只好自己来慢慢...
  • yangmingxing980
  • yangmingxing980
  • 2014年02月28日 15:16
  • 1513

软件工程之数据流图和数据字典

再看软工视频的时候总是听见主讲人说数据流图和数据字典,通过看视频我来总结一下,在说DFD和DD之前,首先看看结构化分析方法。     1、 结构化分析方法:        结构化分析方法最初只是着眼于...
  • lxd8731247769
  • lxd8731247769
  • 2015年08月02日 08:51
  • 3922

asp.net中为Calendar日历控件添加双击日期事件

最近一直在做日历控件,希望能直接在上面双击具体某一天就能弹窗添加事件,刚开始是想在网上找找人家做好的日历控件来用的,后面发现由于公司加密软件的原因,那些插件基本上都用不了,最后没法子了,只好自己来慢慢...
  • yangmingxing980
  • yangmingxing980
  • 2014年02月28日 15:16
  • 1513

ASP.NET弹出式日历选择控件的实现

在需要调用日期选择的页面放置两个TEXTBOX与BUTTON以选择开始时间与结束时间,并在html代码的 之前加入如下javascript语句:          function openM...
  • theoldfuture
  • theoldfuture
  • 2016年09月13日 01:45
  • 133

ASP.NET学习笔记[8] - 梅花雨日历控件与textbox控件用法

aspx页面: 添加引用: 控件调用: '> CalendarMei.js文件
  • xiangcns
  • xiangcns
  • 2013年02月07日 11:30
  • 2133

ASP.NET 日历控件使用实例 6个案例

  • 2013年06月17日 14:19
  • 3.81MB
  • 下载

Asp.net 个性化日历控件代码示例

  • 2013年07月24日 20:00
  • 225KB
  • 下载

ASP.NET日历控件

  • 2007年12月04日 23:02
  • 9KB
  • 下载

基于C#+ASP.NET实现的Scheduler 日历计划控件源码

  • 2008年12月26日 14:23
  • 145KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET工程中日历控件的典型应用之一
举报原因:
原因补充:

(最多只允许输入30个字)