• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#编写的日期选择web自定义控件(有修订)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
实现效果如下:


源码下载:TestControl.rar
TestControl(v1.0.1).rar(解决了会被select遮挡的问题)

Bug:控件放到frame 的页面里面使用得时候就会出错:“parent.event 为空或不是对象”
将InputCalendar.cs中output.WriteLine("parent.event.cancelBubble=true;");一句去掉即可。
这一句的意义是:设置或获取当前事件是否要在事件句柄中向上冒泡。当前应用中好像没有用,所以去掉也不要紧。

如何增加Autopostpack功能:评论中有说明。

解决在用户控件中取值问题:
将原来的:
output.AddAttribute(HtmlTextWriterAttribute.Id,this.ID);
output.AddAttribute(HtmlTextWriterAttribute.Name,this.ID);
改为:
output.AddAttribute(HtmlTextWriterAttribute.Id,this.UniqueID);
output.AddAttribute(HtmlTextWriterAttribute.Name,this.UniqueID);

Feedback

# re: 自己用C#编写的日期选择web自定义控件  回复 81

界面还不错,但现在网上有很多了,大都是弹出窗口,在弹出窗口杀手面前都不能正常运行,不知你这个如何?

# re: 自己用C#编写的日期选择web自定义控件  回复 81

要是能提供两种语言界面就更好了。

# re: 自己用C#编写的日期选择web自定义控件  回复 二十四画生

这个控件用的是一个动态构造的<div>,应该不会受弹出窗口拦截的影响。我用上网助手拦截广告好像不受影响。

# re: 自己用C#编写的日期选择web自定义控件  回复 fking

div 在ie里会被select挡住的。

# re: 自己用C#编写的日期选择web自定义控件  回复 二十四画生

我做的这个日期选择控件当页面中其他控件获得焦点后日期选择部分就会隐藏,所以不存在被select遮挡的问题。(这种方式好吗?)

# re: 自己用C#编写的日期选择web自定义控件  回复 TV9

That's good.

# re: 自己用C#编写的日期选择web自定义控件  回复 lion

做的挺漂亮
也show我的看看,互相学习一下

-------------------------------
欢迎试用WebCalendar (Version 2.1.2004.1007 & 日期控件)
http://www.cnblogs.com/lion.net/archive/2004/10/19/54149.html
她是一个ASP.Net Web应用程序的日期控件,您可以通过设置控制控件中不同部分的样式的属性,来自定义 WebCalendar 控件的外观和图片;支持手动输入日期,支持输入时间,不会被TextBox,DropDownList遮挡。并且她是完全开放源代码的,允许无商业目的个人用户免费使用。 如在商业上使用请与我联系。
----------------------------------

# re: 自己用C#编写的日期选择web自定义控件  回复 vime

做的不错
我前期也做了个,是用HTC做的,相互学习下。

http://www.cnblogs.com/vme/archive/2005/02/04/101671.html

# re: 自己用C#编写的日期选择web自定义控件  回复 二十四画生

我已经发现了div 在ie里的确会被select挡住的,加一个iframe就可以了,我下一版本就改过来。

# re: 自己用C#编写的日期选择web自定义控件  回复 Zeus

不错,我开始也做了一个这样的,后来发现会被其他控件如文本框等挡住,所以才改做弹出式窗体的了。

# re: 自己用C#编写的日期选择web自定义控件  回复 呵呵

能否给出被其他控件如文本框等挡住的问题的解决代码

# re: 自己用C#编写的日期选择web自定义控件  回复 二十四画生

加一个iframe,就不会被其他控件挡住了。我已经试过了。这篇文章的(http://www.cnblogs.com/esshs/archive/2005/04/21/142478.html)下载中包含新改良后的日期选择控件,你可以试试。

# re: 自己用C#编写的日期选择web自定义控件  回复 呵呵

你说的代码我看到了,可是在我这里还是会被下拉框遮挡呀?

# re: 自己用C#编写的日期选择web自定义控件  回复 二十四画生

@呵呵
在看看这个TestControl(v1.0.1).rar,里面包含了测试页面。如果还不行请把你使用我的控件的页面代码发Email给我,让我看看是什么地方出了问题,谢谢!

# re: 自己用C#编写的日期选择web自定义控件  回复 Hants

还是会被下拉框挡住,如果在input后面加个日历的Img就好看了,而不是点击input。另外,取值好像也不可以。

# re: 自己用C#编写的日期选择web自定义控件  回复 二十四画生

@Hants
不会下拉框挡住吧,你是不是的下v1.0.1版?请把你使用我的控件的页面代码发Email给我,让我看看是什么地方出了问题,谢谢!或是把遮挡住的截图发给我也行。

# re: 自己用C#编写的日期选择web自定义控件  回复 Hants

不好意思,这个版本很好,没有上面的问题。
我在fpopcalendar修改了一下:output.WriteLine("VicPopCal = document.getElementById(this.ID + strTxtDate);");
提示缺少对象,为什么呢?谢谢了。

# re: 自己用C#编写的日期选择web自定义控件  回复 二十四画生

@Hants
strTxtDate是什么呀?这个是我程序中的代码吗?你只有一句我就不好判断是什么地方出了问题。

# re: 自己用C#编写的日期选择web自定义控件  回复 Hants

strTxtDate是个字符串“Date”

# re: 自己用C#编写的日期选择web自定义控件  回复 得到

我遇到一个问题,你的控件放到frame 的页面里面使用得时候就会出错,因为
”parent.event 为空或不是对象“

# re: 自己用C#编写的日期选择web自定义控件  回复 二十四画生

@得到,谢谢你提出的问题!
将InputCalendar.cs中output.WriteLine("parent.event.cancelBubble=true;");一句去掉即可。
这一句的意义是:设置或获取当前事件是否要在事件句柄中向上冒泡。当前应用中好像没有用,所以去掉也不要紧。
希望再次提出问题!:)

# re: 自己用C#编写的日期选择web自定义控件(有修订)  回复 东东王

你的控件放到frame 的页面里面使用得时候就会出错,InputCalendar.cs中并没有output.WriteLine("parent.event.cancelBubble=true;");这一句,请指教,谢谢!

# re: 自己用C#编写的日期选择web自定义控件(有修订)  回复 东东王

你好,我是上一个提问的,问题解决了,谢谢!

# re: 自己用C#编写的日期选择web自定义控件(有修订)  回复 小锋

大侠,我公司要用日期选择控件,想跟你说一声,另外,我改动了一点点,使他选择后可以自动回发。
代码如下:
output.WriteLine("function fSetSelected(aCell){");
output.WriteLine("var iOffset = 0;");
output.WriteLine("var iYear = parseInt(document.all.tbSelYear.value);");
output.WriteLine("var iMonth = parseInt(document.all.tbSelMonth.value);");
output.WriteLine("aCell.bgColor = gcBG;");
output.WriteLine("with (aCell.children[\"cellText\"]){");
output.WriteLine("var iDay = parseInt(innerText);");
output.WriteLine("if (color==gcGray){iOffset = (Victor<10)?-1:1;}");
output.WriteLine("iMonth += iOffset;");
output.WriteLine("if (iMonth<1) { iYear--; iMonth = 12;}else{if (iMonth>12){iYear++;iMonth = 1;}}");
output.WriteLine("}");
output.WriteLine("fSetDate(iYear, iMonth, iDay);");
output.WriteLine ("javascript:"+Page.GetPostBackEventReference(this)+";");

最后一行加上了。

# re: 自己用C#编写的日期选择web自定义控件(有修订)  回复 丁士锋

if (autopostback==true )
{
output.WriteLine ("javascript:"+Page.GetPostBackEventReference(this)+";");
}
//添加了一个AUTOPOSTBACK功能。



在头部加上如下代码,即可实现选择Autopostpack功能了。
private bool autopostback=true;


[Bindable(true),
Category("Appearance"),
DefaultValue(true)]
public bool AutoPostBack
{
get
{
return autopostback;
}
set
{
autopostback=value;
}
}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#温故而知新学习系列之XML编程—XmlValidatingReader类对XML文档验证(七) ...发布时间:2022-07-10
下一篇:
c#高级编程知识发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap