在各种项目里都少不了时间的出现,有时候我们要选择时间,但有时候只能选择年-月-日 没有时分,有时候为了处理这种时间显示还要花点时间来处理,在这种情况下就写了一个简单的时间控件:
下面是代码片断:
这里面的日期是信赖于一个HTC控件在这里可以下载到:
HTC日期控件
下面是源代码:
时间控件源代码
希望大家指教,我会虚心改正学习。
1
using
System;
2 using System.Web.UI;
3 using System.Web.UI.WebControls;
4 using System.ComponentModel;
5 using System.ComponentModel.Design;
6
7 namespace HBControls
8 {
9
10 /// <summary>
11 /// 作者:王永强|HeroBeast|海尔比斯特
12 /// 时间:2006-12-24
13 /// 功能:显示为:2008-02-12 12:01的时间格式,支持多语言
14 /// </summary>
15 [DefaultProperty( " Text " ),
16 ToolboxData( " <{0}:HBDateTime runat=server></{0}:HBDateTime> " )]
17 public class HBDateTime : System.Web.UI.WebControls.WebControl,INamingContainer
18 {
19 // 声明变量
20 private string _strText; // 时间
21 private string _strHTCPath; // HTC控件的路径
22 private string _strAuthor = " HeroBeast " ; // 作者
23 private string _strTime = DateTime.Now.ToShortDateString(); // 开发时间
24
25
26 private TextBox _textBox; // 日期
27 private DropDownList _drpHour; // 小时
28 private DropDownList _drpMin; // 分钟
29
30 private string _Hour;
31 private string _Min;
32
33 public string Hour
34 {
35 get
36 {
37 return _Hour;
38 }
39 set
40 {
41 _Hour = value;
42 }
43 }
44
45 public string Min
46 {
47 get
48 {
49 return _Min;
50 }
51 set
52 {
53 _Min = value;
54 }
55 }
56
57 // 构造
58 public HBDateTime()
59 {
60 // 默认显示为当前时间
61 this .Text = DateTime.Now.ToString( " yyyy-MM-dd HH:mm " ,System.Globalization.DateTimeFormatInfo.InvariantInfo);
62 _strAuthor = " HeroBeast " ;
63 _strTime = DateTime.Now.ToShortDateString();
64
65
66 }
67 // 开发时间
68 [
69 Bindable( true ),
70 Category( " DevelopTime " ),
71 DefaultValue( "" ),
72 Description( " 开发时间 " )
73 ]
74 public string DevelopTime
75 {
76 get { return _strTime; }
77 // set { _strAuthor = value; }
78 }
79 // 作者
80 [
81 Bindable( true ),
82 Category( " Author " ),
83 DefaultValue( "" ),
84 Description( " 作者 " )
85 ]
86 public string Author
87 {
88 get { return _strAuthor; }
89 // set { _strAuthor = value; }
90 }
91 //
92 [
93 Bindable( true ),
94 Category( " Appearance " ),
95 DefaultValue( "" ),
96 Description( " 设置HTC日期控件的路径 " )
97 ]
98 public string HTCPath
99 {
100 get { return _strHTCPath; }
101 set { _strHTCPath = value; }
102 }
103 // 定义属性
104 [
105 Bindable( true ),
106 Category( " Appearance " ),
107 DefaultValue( "" ),
108 Description( " 获得或设置控件上的时间(格式:2006-10-14 17:15) " )
109 ]
110 public string Text
111 {
112 get
113 {
114 EnsureChildControls();
115 // 组合成时间格式
116 _strText = this ._textBox.Text.Trim() + " " + this ._drpHour.SelectedValue + " : " + this ._drpMin.SelectedValue;
117 return _strText;
118 }
119
120 set
121 {
122 EnsureChildControls();
123 string strTemp = Convert.ToDateTime(value).ToString( " yyyy-MM-dd HH:mm " ,System.Globalization.DateTimeFormatInfo.InvariantInfo);
124
125 _textBox.Text = strTemp.Substring( 0 , 10 ).ToString();
126 _drpHour.SelectedIndex = _drpHour.Items.IndexOf(_drpHour.Items.FindByValue(strTemp.Substring( 11 , 2 ).ToString()));
127 string aa = strTemp.Substring( 11 , 2 ).ToString();
128 _drpMin.SelectedIndex = _drpMin.Items.IndexOf(_drpMin.Items.FindByValue(strTemp.Substring( 14 , 2 ).ToString()));
129 }
130 }
131
132 // 重写Control属性
133 public override ControlCollection Controls
134 {
135 get
136 {
137 EnsureChildControls();
138 return base .Controls;
139 }
140 }
141
142 // 重写CreateChildControls方法,将子控件添加到复合控件中
143 protected override void CreateChildControls()
144 {
145 Controls.Clear(); // 清除所有子控件
146
147 _textBox = new TextBox();
148
149 // 设置TextBox为只读
150 _textBox.ReadOnly = true ;
151 // 样式
152 _textBox.CssClass = " dateTimePicker " ;
153 _textBox.Width = Unit.Pixel( 80 );
154 //
155 _drpHour = new DropDownList();
156
157 for ( int j = 0 ;j < 24 ;j ++ )
158 {
159 if (j < 10 )
160 {
161 _drpHour.Items.Add( " 0 " + j.ToString());
162 }
163 else
164 {
165 _drpHour.Items.Add(j.ToString());
166 }
167
168
169 }
170
171 _drpMin = new DropDownList();
172
173 for ( int i = 0 ;i < 60 ;i ++ )
174 {
175 if (i < 10 )
176 {
177 _drpMin.Items.Add( " 0 " + i.ToString());
178 }
179 else
180 {
181 _drpMin.Items.Add(i.ToString());
182 }
183 }
184
185 this .Controls.Add(_textBox);
186 this .Controls.Add(_drpHour);
187 this .Controls.Add(_drpMin);
188 }
189
190 // 重写Render方法
191 protected override void Render(HtmlTextWriter output)
192 {
193 // 写日期控件的样式
194 output.Write( " <style>BODY { }TABLE { FONT-SIZE: 12px }.dateTimePicker { BEHAVIOR: url( " + this ._strHTCPath + " ) }</style> " );
195
196 //
197 output.AddAttribute(HtmlTextWriterAttribute.Border, " 0px " );
198 output.AddAttribute(HtmlTextWriterAttribute.Cellpadding, " 0px " );
199 output.AddAttribute(HtmlTextWriterAttribute.Cellspacing, " 0px " );
200 output.RenderBeginTag(HtmlTextWriterTag.Table);
201 output.RenderBeginTag(HtmlTextWriterTag.Tr);
202 output.RenderBeginTag(HtmlTextWriterTag.Td);
203 //
204 _textBox.RenderControl(output);
205 output.RenderEndTag();
206
207 output.RenderBeginTag(HtmlTextWriterTag.Td);
208 _drpHour.RenderControl(output);
209 output.Write(_Hour);
210 output.RenderEndTag();
211
212 output.RenderBeginTag(HtmlTextWriterTag.Td);
213 _drpMin.RenderControl(output);
214 output.Write(_Min);
215 output.RenderEndTag();
216
217 output.RenderEndTag(); // tr
218
219 output.RenderEndTag(); // table
220 }
221 }
222 }
223
2 using System.Web.UI;
3 using System.Web.UI.WebControls;
4 using System.ComponentModel;
5 using System.ComponentModel.Design;
6
7 namespace HBControls
8 {
9
10 /// <summary>
11 /// 作者:王永强|HeroBeast|海尔比斯特
12 /// 时间:2006-12-24
13 /// 功能:显示为:2008-02-12 12:01的时间格式,支持多语言
14 /// </summary>
15 [DefaultProperty( " Text " ),
16 ToolboxData( " <{0}:HBDateTime runat=server></{0}:HBDateTime> " )]
17 public class HBDateTime : System.Web.UI.WebControls.WebControl,INamingContainer
18 {
19 // 声明变量
20 private string _strText; // 时间
21 private string _strHTCPath; // HTC控件的路径
22 private string _strAuthor = " HeroBeast " ; // 作者
23 private string _strTime = DateTime.Now.ToShortDateString(); // 开发时间
24
25
26 private TextBox _textBox; // 日期
27 private DropDownList _drpHour; // 小时
28 private DropDownList _drpMin; // 分钟
29
30 private string _Hour;
31 private string _Min;
32
33 public string Hour
34 {
35 get
36 {
37 return _Hour;
38 }
39 set
40 {
41 _Hour = value;
42 }
43 }
44
45 public string Min
46 {
47 get
48 {
49 return _Min;
50 }
51 set
52 {
53 _Min = value;
54 }
55 }
56
57 // 构造
58 public HBDateTime()
59 {
60 // 默认显示为当前时间
61 this .Text = DateTime.Now.ToString( " yyyy-MM-dd HH:mm " ,System.Globalization.DateTimeFormatInfo.InvariantInfo);
62 _strAuthor = " HeroBeast " ;
63 _strTime = DateTime.Now.ToShortDateString();
64
65
66 }
67 // 开发时间
68 [
69 Bindable( true ),
70 Category( " DevelopTime " ),
71 DefaultValue( "" ),
72 Description( " 开发时间 " )
73 ]
74 public string DevelopTime
75 {
76 get { return _strTime; }
77 // set { _strAuthor = value; }
78 }
79 // 作者
80 [
81 Bindable( true ),
82 Category( " Author " ),
83 DefaultValue( "" ),
84 Description( " 作者 " )
85 ]
86 public string Author
87 {
88 get { return _strAuthor; }
89 // set { _strAuthor = value; }
90 }
91 //
92 [
93 Bindable( true ),
94 Category( " Appearance " ),
95 DefaultValue( "" ),
96 Description( " 设置HTC日期控件的路径 " )
97 ]
98 public string HTCPath
99 {
100 get { return _strHTCPath; }
101 set { _strHTCPath = value; }
102 }
103 // 定义属性
104 [
105 Bindable( true ),
106 Category( " Appearance " ),
107 DefaultValue( "" ),
108 Description( " 获得或设置控件上的时间(格式:2006-10-14 17:15) " )
109 ]
110 public string Text
111 {
112 get
113 {
114 EnsureChildControls();
115 // 组合成时间格式
116 _strText = this ._textBox.Text.Trim() + " " + this ._drpHour.SelectedValue + " : " + this ._drpMin.SelectedValue;
117 return _strText;
118 }
119
120 set
121 {
122 EnsureChildControls();
123 string strTemp = Convert.ToDateTime(value).ToString( " yyyy-MM-dd HH:mm " ,System.Globalization.DateTimeFormatInfo.InvariantInfo);
124
125 _textBox.Text = strTemp.Substring( 0 , 10 ).ToString();
126 _drpHour.SelectedIndex = _drpHour.Items.IndexOf(_drpHour.Items.FindByValue(strTemp.Substring( 11 , 2 ).ToString()));
127 string aa = strTemp.Substring( 11 , 2 ).ToString();
128 _drpMin.SelectedIndex = _drpMin.Items.IndexOf(_drpMin.Items.FindByValue(strTemp.Substring( 14 , 2 ).ToString()));
129 }
130 }
131
132 // 重写Control属性
133 public override ControlCollection Controls
134 {
135 get
136 {
137 EnsureChildControls();
138 return base .Controls;
139 }
140 }
141
142 // 重写CreateChildControls方法,将子控件添加到复合控件中
143 protected override void CreateChildControls()
144 {
145 Controls.Clear(); // 清除所有子控件
146
147 _textBox = new TextBox();
148
149 // 设置TextBox为只读
150 _textBox.ReadOnly = true ;
151 // 样式
152 _textBox.CssClass = " dateTimePicker " ;
153 _textBox.Width = Unit.Pixel( 80 );
154 //
155 _drpHour = new DropDownList();
156
157 for ( int j = 0 ;j < 24 ;j ++ )
158 {
159 if (j < 10 )
160 {
161 _drpHour.Items.Add( " 0 " + j.ToString());
162 }
163 else
164 {
165 _drpHour.Items.Add(j.ToString());
166 }
167
168
169 }
170
171 _drpMin = new DropDownList();
172
173 for ( int i = 0 ;i < 60 ;i ++ )
174 {
175 if (i < 10 )
176 {
177 _drpMin.Items.Add( " 0 " + i.ToString());
178 }
179 else
180 {
181 _drpMin.Items.Add(i.ToString());
182 }
183 }
184
185 this .Controls.Add(_textBox);
186 this .Controls.Add(_drpHour);
187 this .Controls.Add(_drpMin);
188 }
189
190 // 重写Render方法
191 protected override void Render(HtmlTextWriter output)
192 {
193 // 写日期控件的样式
194 output.Write( " <style>BODY { }TABLE { FONT-SIZE: 12px }.dateTimePicker { BEHAVIOR: url( " + this ._strHTCPath + " ) }</style> " );
195
196 //
197 output.AddAttribute(HtmlTextWriterAttribute.Border, " 0px " );
198 output.AddAttribute(HtmlTextWriterAttribute.Cellpadding, " 0px " );
199 output.AddAttribute(HtmlTextWriterAttribute.Cellspacing, " 0px " );
200 output.RenderBeginTag(HtmlTextWriterTag.Table);
201 output.RenderBeginTag(HtmlTextWriterTag.Tr);
202 output.RenderBeginTag(HtmlTextWriterTag.Td);
203 //
204 _textBox.RenderControl(output);
205 output.RenderEndTag();
206
207 output.RenderBeginTag(HtmlTextWriterTag.Td);
208 _drpHour.RenderControl(output);
209 output.Write(_Hour);
210 output.RenderEndTag();
211
212 output.RenderBeginTag(HtmlTextWriterTag.Td);
213 _drpMin.RenderControl(output);
214 output.Write(_Min);
215 output.RenderEndTag();
216
217 output.RenderEndTag(); // tr
218
219 output.RenderEndTag(); // table
220 }
221 }
222 }
223
这里面的日期是信赖于一个HTC控件在这里可以下载到:
HTC日期控件
下面是源代码:
时间控件源代码
希望大家指教,我会虚心改正学习。