65.9K
CodeProject 正在变化。 阅读更多。
Home

在日历中突出显示重要日期

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.50/5 (12投票s)

2004年8月10日

1分钟阅读

viewsIcon

158075

downloadIcon

3704

在日历控件中突出显示重要日期。

引言

我们都熟悉 ASP.NET Calendar 控件。我们可以点击日期并将其突出显示。但是,一旦刷新页面,所选日期就会消失。不如创建一个能够记住您所选日期的简单应用程序呢?

创建一个简单的日历

要创建日历,只需从 VS.NET IDE 中通常位于左侧的工具箱中拖放 Calendar 控件即可。将 Calendar 控件拖到页面上后,可以通过右键单击它并选择“属性”,然后选择“自动格式化”来更改日历的外观。下图显示了一个突出显示当前日期的日历。

Sample screenshot

创建数据库表以存储选定的日期

在此示例中,我们还需要创建一个数据库。我在 SQL Server 2000 中创建了数据库。为了保持简单,我只创建了两个字段:一个是自动生成数字的 CalendarID,另一个是 DateTime

Page_Load 事件代码

private void Page_Load(object sender, System.EventArgs e)
{
  if(!Page.IsPostBack)
  {
    // Calls the Bind Method
    BindData(); 
  }
}

BindData 方法代码

public void BindData()
{
  SqlCommand myCommand = new SqlCommand("SELECT CalDate FROM tblCal", 
                                                        myConnection);
  myCommand.CommandType = CommandType.Text;
  // Opens a Database Connection
  myConnection.Open();
  // Execute DataReader
  SqlDataReader dr = myCommand.ExecuteReader();
  // Read DataReader till it reaches the end
  while( dr.Read() == true )
  {
    // Assign the Calendar control dates
    // already contained in the database
    myCal.SelectedDates.Add((DateTime)dr.GetSqlDateTime(0));
  }

  // Close DataReader
  dr.Close();
  // Close database Connection
  myConnection.Close(); 
}

标记测试日期按钮事件代码

private void Button1_Click(object sender, System.EventArgs e)
{
  // Binds the Data on the page
  BindData(); 
  // Set the color of Selected Calendar Cells to Red
  myCal.SelectedDayStyle.BackColor = System.Drawing.Color.Red;

  SqlCommand myCommand = new SqlCommand("InsertDate",myConnection);
  myCommand.CommandType = CommandType.StoredProcedure;
  myCommand.Parameters.Add(new SqlParameter("@v_DateTime",SqlDbType.DateTime));
  myCommand.Parameters["@v_DateTime"].Value = selectedDate;
  myConnection.Open();
  myCommand.ExecuteNonQuery();
  myConnection.Close();
}

一旦按下按钮,您的日历将显示如下图像,显示所选日期

Sample screenshot

第二次加载页面

您还可以更改页面第二次加载时的颜色,如以下图像所示,其中日历被第二次加载

Sample screenshot

感谢并享受编码!

© . All rights reserved.