波斯码BOSSMA Information Technology

ASP.NET自定义控件之Calendar日期选择控件

发布时间:2008年3月1日 / 分类:ASP.NET / 20,556 次浏览 / 评论

控件下载(dll文件)
注:下载包含本人全部控件,全部免费使用,如果您有其它问题,可以发邮件给我:bossma@yeah.net

2010-2-27
这个控件不再继续维护,因为我发现了两个更好更完善的日期选择控件:
My97日期控件 RJSPopCalendar

2008-11-27更新
1、解决不能设置初始值、获取选中值的问题
2、重写生成的html代码
3、TextBox在ReadOnly情况下不能获取和显示值的问题
4、JavaScript可能导致错误的部分代码

这段时间做了一些自定义控件,有几个感觉很好很通用,现在拿出来,大家分享一下。

今天先发布一个日历选择控件:PopCalendar。

这个功能原来有以下几个缺点:
1、网页中添加一个按钮,设置要填充到哪个输入框(设置javascript),还需要额外的javascript文件引入
2、用到一些图片,需要放到相应的文件夹中,并在javascript文件中设置
3、兼容性不好,在firefox中显示位置不正常

针对这些问题,这个控件将输入框、点击按钮和javascript封装到了一块,将图片替换成文字符号,并且修正了firefox下显示不正常的问题,但是仍然可能会与你的javascript冲突,请谨慎使用!

【看看效果】

1、设计图效果
popcalendar_designer
2、运行时效果
popcalendarrun_1

popcalendar_run2

在firefox下可能会有细微差别,但是总体效果没问题。

【使用例子】
1、ASPX页面

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PopCalendarTest.aspx.cs"
 Inherits="PopCalendar" %>

<%@ Register Assembly="VeryCodes.Controls" Namespace="VeryCodes.Controls.Web" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
 <title>无标题页</title>
</head>
<body>
 <form id="form1" runat="server">
  <div>
   <cc1:PopCalendar ID="PopCalendar1" runat="server" TextBoxWidth="100"
  />
   <cc1:PopCalendar ID="PopCalendar2" runat="server" TextBoxWidth="80" />
  </div>
  <p>
   <asp:Button ID="Button1" runat="server" onclick="Button1_Click"
    style="height: 26px" Text="Button" />
  </p>
  <p>
   &nbsp;</p>
 <p>
   <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
&nbsp;
   <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
  </p>
 </form>
</body>
</html>

2、ASPX.CS页面

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class PopCalendar : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        this.PopCalendar1.Text="2008-12-1";
        this.PopCalendar2.Text = "2008-12-2";
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        this.Label1.Text = this.PopCalendar1.Text;
        this.Label2.Text = this.PopCalendar2.Text;
    }
}

如果您有什么问题,欢迎与我讨论!

下一个控件即将推出:
1、鼠标悬停在含有title的标记上时,在鼠标的旁边显示漂亮的提示信息(title中的内容)
2、将以上功能限制只提供给某一个绑定的控件
控件效果预览:
tipcontrol_view.gif

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自波斯码,原文地址《ASP.NET自定义控件之Calendar日期选择控件

关键字:

建议订阅本站,及时阅读最新文章!
【上一篇】 【下一篇】

目前有10 条评论

  1. 求教问题! 8楼:

    在 DetailsView 模板列中如何取值啊?
    我这样写出错,请问应该怎么写呢?
    TextBox strtext = (TextBox)dvCaseBaseInfo.FindControl(“popcalendarBirthday”);

  2. fireleopard 7楼:

    请问如何能修改样式啊?

  3. esea 6楼:

    你好,你的日期控件在母版页中使用有问题。。。

  4. bossma 5楼:

    @cai 一个控件中使用两个日期吗?我不是很明白你的意思,这个控件目前只支持选择一个时间,可以给我发邮件详细说明:bossma@yeah.net

  5. cai 4楼:

    请问该控件如何使用两个日期,并且确保后面选择的日期大于前面选择的日期

  6. mike bluesky 地板:

    图片的按钮会更好看一些

    希望 支持多语言
    希望支持设计态显示
    希望增加DateVlue之类的属性

    我发布了类型的控件在www.dotnetcoding.net

    欢迎交流

  7. bossma 板凳:

    to:ben
    在什么情况下出现的?好像是找不到什么

  8. ben 沙发:

    请问为什么会出现  发生了未处理的异常。值不能为空。参数名:stream