惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
P
Proofpoint News Feed
D
DataBreaches.Net
C
Check Point Blog
L
LangChain Blog
量子位
美团技术团队
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
N
Netflix TechBlog - Medium
V
Visual Studio Blog
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
MongoDB | Blog
MongoDB | Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Last Week in AI
Last Week in AI
The GitHub Blog
The GitHub Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
U
Unit 42
腾讯CDC
M
MIT News - Artificial intelligence
Microsoft Azure Blog
Microsoft Azure Blog
Blog — PlanetScale
Blog — PlanetScale

博客园 - deadshot123

tmplog javascript时间toString在java中转换成Date的测试代码 - deadshot123 - 博客园 在windows xp sp2 下修复 mdac 2.8 OutLook风格的菜单 td上长英文单词换行 struts-tiles初学 - deadshot123 - 博客园 时间控件最终版 博客上的日历控件的初步实现 W3wp.exe内存占用问题以及如何查看一个网站对应的w3wp.exe(转) test 分批提交数据(删除大数据量时候用) 在C#中运用SQLDMO备份和恢复SQL Server数据库 (转) Bat文件编写方法(转) Visual Studio 2005常用插件搜罗 (转) oracle使用numtoyminterval来添加准确的月或者年 2003 server iis默认不解析asp 小知识:象素与字号的换算(转) .net学习计划 关于xp+ie7下,执行confirm会出现点击取消也执行submit的问题解决方案
点击改变颜色的日历(上篇改一行代码)
deadshot123 · 2007-05-21 · via 博客园 - deadshot123

using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI;
using System.ComponentModel;

namespace ClassLibrary1
{
    
public class ChangeColorDateControl : System.Web.UI.WebControls.WebControl, System.Web.UI.INamingContainer, System.Web.UI.IPostBackEventHandler
    
{
        
private static readonly object ClickKey = new object();

        [Description(
"单击日期触发的时间!")]
        
public event EventHandler Click
        
{
            add
            
{
                Events.AddHandler(ClickKey, value);
            }

            remove
            
{
                Events.RemoveHandler(ClickKey, value);
            }

        }


        
private static readonly string[] header = new string[] "星期日""星期一""星期二""星期三""星期四""星期五""星期六" };

        
//private DateTime showDate;

        
/// <summary>
        
/// Gets or sets the show date.
        
/// </summary>
        
/// <value>The show date.</value>

        [Description("格式必须为yyyy-MM一样")]
        
public string ShowDate
        
{
            
get
            
{
                
if (ViewState["showdate"!= null)
                
{
                    
return ViewState["showdate"].ToString();
                }

                
else
                
{

                    DateTime showDate 
= Convert.ToDateTime(System.DateTime.Now.Year + "-" + System.DateTime.Now.Month + "-01");
                    ViewState[
"showdate"= showDate.ToString("yyyy-MM");
                    
return ViewState["showdate"].ToString();
                }

            }

            
set
            
{
                DateTime showDate;
                
if (value == null)
                
{
                    showDate 
= Convert.ToDateTime(System.DateTime.Now.Year + "-" + System.DateTime.Now.Month + "-01");
                }

                
else
                
{
                    showDate 
= Convert.ToDateTime(value + "-01");
                }

                ViewState[
"showdate"= showDate.ToString("yyyy-MM");

            }

        }


        
protected override void AddAttributesToRender(HtmlTextWriter writer)
        
{
            
//为table标签定义属性和样式
            
// writer.AddAttribute(HtmlTextWriterAttribute.Width, "287px");
            
//writer.AddStyleAttribute(HtmlTextWriterStyle.BorderWidth, "1px");
            writer.AddAttribute(HtmlTextWriterAttribute.Border, "1px");
            writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, 
"0");
            writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, 
"0");
            
base.AddAttributesToRender(writer);

        }


        
/// <summary>
        
/// 获取与此 Web 服务器控件相对应的 <see cref="T:System.Web.UI.HtmlTextWriterTag"></see> 值。此属性主要由控件开发人员使用。
        
/// </summary>
        
/// <value></value>
        
/// <returns><see cref="T:System.Web.UI.HtmlTextWriterTag"></see> 枚举值之一。</returns>

        protected override HtmlTextWriterTag TagKey
        
{
            
get
            
{
                
return HtmlTextWriterTag.Table;
            }

        }

        
/// <summary>
        
/// 将控件的内容呈现到指定的编写器中。此方法主要由控件开发人员使用。
        
/// </summary>
        
/// <param name="writer"><see cref="T:System.Web.UI.HtmlTextWriter"></see>,表示要在客户端呈现 HTML 内容的输出流。</param>

        protected override void RenderContents(HtmlTextWriter writer)
        
{

            DateTime showDate 
= Convert.ToDateTime(this.ShowDate + "-01");
            writer.RenderBeginTag(HtmlTextWriterTag.Thead);
            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
            writer.AddAttribute(HtmlTextWriterAttribute.Align, 
"center");
            writer.AddAttribute(HtmlTextWriterAttribute.Colspan, 
"7");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            writer.Write(showDate.Year 
+ "" + showDate.Month + "");
            writer.RenderEndTag();
            writer.RenderEndTag();
            writer.RenderEndTag();
            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
            
for (int i = 0; i < ChangeColorDateControl.header.Length; i++)
            
{
                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                writer.Write(ChangeColorDateControl.header[i]);
                writer.RenderEndTag();
            }


            writer.RenderEndTag();
            DateTime end 
= showDate.AddMonths(1);
            
int days = ((TimeSpan)end.Subtract(showDate)).Days;
            
int spaceday = Convert.ToInt32(showDate.DayOfWeek);
            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
            
for (int i = 0; i < spaceday; i++)
            
{
                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                writer.WriteLine(
"&nbsp;");
                writer.RenderEndTag();
            }

            
for (int i = 1; i <= days; i++)
            
{
                writer.Write(
"<td onclick=\"if(this.style.backgroundColor!='red'){this.style.backgroundColor='red';}else{this.style.backgroundColor='blue';}");
//关键在于style.backgroundColor, 非background-color
                
//writer.Write(Page.GetPostBackEventReference(this, this.ShowDate + "-" + i.ToString().PadLeft(2, '0')));
                writer.Write("\">" + i.ToString() + "</td>");

                
//writer.RenderEndTag();
                if ((i + spaceday) % 7 == 0)
                
{
                    writer.RenderEndTag();
                    writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                }

            }

            
if ((spaceday + days) % 7 != 0)
            
{
                
int allcount = spaceday + days > 35 ? 42 : 35;
                
for (int i = 0; i < allcount - spaceday - days; i++)
                
{
                    writer.RenderBeginTag(HtmlTextWriterTag.Td);
                    writer.Write(
"&nbsp;");

                    writer.RenderEndTag();
                }

                writer.RenderEndTag();
            }


        }


        
protected virtual void OnClick(StringEventArgs e)
        
{
            EventHandler clickEventDelegate 
=
               (EventHandler)Events[ClickKey];
            
if (clickEventDelegate != null)
            
{
                clickEventDelegate(
this, e);
            }


        }


        
IPostBackEventHandler 成员
    }


   
}