using
System;
using
System.ComponentModel;
using
System.Text;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;[assembly: TagPrefix(
"
EFPlatform.WebControls
"
,
"
efp
"
)]
namespace
EFPlatform.WebControls{ [DefaultProperty(
"
Date
"
)] [ToolboxData(
"
<{0}:DateDropDownList runat=server></{0}:DateDropDownList>
"
)]
public
class
DateDropDownList : WebControl, INamingContainer {
#region
Properties
#region
Data(数据)
#region
Date
[Bindable(
true
)] [Category(
"
Data
"
)] [DefaultValue(
"
1900-1-1
"
)]
public
DateTime Date {
get
{
this
.GetDate();
return
(ViewState[
"
Date
"
]
==
null
)
?
(
new
DateTime(
1900
,
1
,
1
)) : (DateTime)ViewState[
"
Date
"
]; }
set
{ ViewState[
"
Date
"
]
=
value; } }
#endregion
#region
FirstYear
[Category(
"
Data
"
)] [DefaultValue(
1900
)]
public
int
FirstYear {
get
{
return
(ViewState[
"
FirstYear
"
]
==
null
)
?
1900
: (
int
)ViewState[
"
FirstYear
"
]; }
set
{ ViewState[
"
FirstYear
"
]
=
value; } }
#endregion
#region
LastYear
[Category(
"
Data
"
)]
public
int
LastYear {
get
{
return
(ViewState[
"
LastYear
"
]
==
null
)
?
DateTime.Now.Year : (
int
)ViewState[
"
LastYear
"
]; }
set
{ ViewState[
"
LastYear
"
]
=
value; } }
#endregion
#endregion
#region
Appearance(外观)
#region
SelectCssClass
[Category(
"
Appearance
"
)]
public
string
SelectCssClass {
get
{
return
(ViewState[
"
SelectCssClass
"
]
==
null
)
?
string
.Empty : (
string
)ViewState[
"
SelectCssClass
"
]; }
set
{ ViewState[
"
SelectCssClass
"
]
=
value; } }
#endregion
#region
YearTitle
[Category(
"
Appearance
"
)] [DefaultValue(
"
年
"
)]
public
string
YearTitle {
get
{
return
(ViewState[
"
YearTitle
"
]
==
null
)
?
"
年
"
: (
string
)ViewState[
"
YearTitle
"
]; }
set
{ ViewState[
"
YearTitle
"
]
=
value; } }
#endregion
#region
MonthTitle
[Category(
"
Appearance
"
)] [DefaultValue(
"
月
"
)]
public
string
MonthTitle {
get
{
return
(ViewState[
"
MonthTitle
"
]
==
null
)
?
"
月
"
: (
string
)ViewState[
"
MonthTitle
"
]; }
set
{ ViewState[
"
MonthTitle
"
]
=
value; } }
#endregion
#region
DayTitle
[Category(
"
Appearance
"
)] [DefaultValue(
"
日
"
)]
public
string
DayTitle {
get
{
return
(ViewState[
"
DayTitle
"
]
==
null
)
?
"
日
"
: (
string
)ViewState[
"
DayTitle
"
]; }
set
{ ViewState[
"
DayTitle
"
]
=
value; } }
#endregion
#endregion
#endregion
#region
GetDate
private
void
GetDate() {
if
(Page.IsPostBack) {
string
strYear
=
Page.Request.Form[
this
.ClientID
+
"
_Year
"
];
string
strMonth
=
Page.Request.Form[
this
.ClientID
+
"
_Month
"
];
string
strDay
=
Page.Request.Form[
this
.ClientID
+
"
_Day
"
]; ViewState[
"
Date
"
]
=
DateTime.Parse(
string
.Format(
"
{0}-{1}-{2}
"
, strYear, strMonth, strDay)); } }
#endregion
#region
BuildJScript
private
string
BuildJScript() { StringBuilder sb
=
new
StringBuilder(); sb.Append(
"
<script language="jscript"> <!--
"
); sb.Append(
"
function {0}_Day_Check() {{
"
); sb.Append(
"
var {0}_obj_Year = document.getElementById("{0}_Year");
"
); sb.Append(
"
var {0}_obj_Month = document.getElementById("{0}_Month");
"
); sb.Append(
"
if(parseInt({0}_obj_Month.value) == 2) {{
"
); sb.Append(
"
if(parseInt({0}_obj_Year.value) % 4 == 0) {{
"
); sb.Append(
"
{0}_Day_SetOptions(29); }}
"
); sb.Append(
"
else {{
"
); sb.Append(
"
{0}_Day_SetOptions(28); }} }}
"
); sb.Append(
"
else {{
"
); sb.Append(
"
switch(parseInt({0}_obj_Month.value)) {{
"
); sb.Append(
"
case 1: {0}_Day_SetOptions(31); break;
"
); sb.Append(
"
case 3: {0}_Day_SetOptions(31); break;
"
); sb.Append(
"
case 5: {0}_Day_SetOptions(31); break;
"
); sb.Append(
"
case 7: {0}_Day_SetOptions(31); break;
"
); sb.Append(
"
case 8: {0}_Day_SetOptions(31); break;
"
); sb.Append(
"
case 10: {0}_Day_SetOptions(31); break;
"
); sb.Append(
"
case 12: {0}_Day_SetOptions(31); break;
"
); sb.Append(
"
case 4: {0}_Day_SetOptions(30); break;
"
); sb.Append(
"
case 6: {0}_Day_SetOptions(30); break;
"
); sb.Append(
"
case 9: {0}_Day_SetOptions(30); break;
"
); sb.Append(
"
case 11: {0}_Day_SetOptions(30); break;
"
); sb.Append(
"
default: break; }} }} }}
"
); sb.Append(
"
"
); sb.Append(
"
function {0}_Day_SetOptions({0}_Day_Count) {{
"
); sb.Append(
"
var {0}_obj_Day = document.getElementById("{0}_Day");
"
); sb.Append(
"
var {0}_Day_SelectedDay;
"
); sb.Append(
"
if({0}_obj_Day.value == "") {{
"
); sb.Append(
"
{0}_Day_SelectedDay = 1; }}
"
); sb.Append(
"
else {{
"
); sb.Append(
"
{0}_Day_SelectedDay = parseInt({0}_obj_Day.value); }}
"
); sb.Append(
"
if({0}_Day_SelectedDay > {0}_Day_Count) {{
"
); sb.Append(
"
{0}_Day_SelectedDay = {0}_Day_Count; }}
"
); sb.Append(
"
{0}_obj_Day.length = 0;
"
); sb.Append(
"
for(var i = 1; i <= {0}_Day_Count; i++) {{
"
); sb.Append(
"
{0}_obj_Day.options.add(new Option(i, i)); }}
"
); sb.Append(
"
{0}_obj_Day.value = {0}_Day_SelectedDay; }}
"
); sb.Append(
"
--> </script>
"
);
return
string
.Format(sb.ToString(),
this
.ClientID); }
#endregion
#region
BuildHtmlElement
private
string
BuildHtmlElement() { StringBuilder sb
=
new
StringBuilder(); sb.AppendFormat(
"
<select id="{0}_Year" name="{0}_Year" οnchange="{0}_Day_Check();" class="{1}">
"
,
this
.ClientID,
this
.SelectCssClass);
for
(
int
i
=
this
.FirstYear; i
<=
this
.LastYear; i
++
) {
if
(i
==
this
.Date.Year) { sb.AppendFormat(
"
<option value="{0}" selected>{0}</option>
"
, i); }
else
{ sb.AppendFormat(
"
<option value="{0}">{0}</option>
"
, i); } } sb.AppendFormat(
"
</select> {1}<select id="{0}_Month" name="{0}_Month" οnchange="{0}_Day_Check();" class="{2}">
"
,
this
.ClientID,
this
.YearTitle,
this
.SelectCssClass);
for
(
int
i
=
1
; i
<=
12
; i
++
) {
if
(i
==
this
.Date.Month) { sb.AppendFormat(
"
<option value="{0}" selected>{0}</option>
"
, i); }
else
{ sb.AppendFormat(
"
<option value="{0}">{0}</option>
"
, i); } } sb.AppendFormat(
"
</select>{1}<select id="{0}_Day" name="{0}_Day" οnmοuseοver="{0}_Day_Check();" class="{2}">
"
,
this
.ClientID,
this
.MonthTitle,
this
.SelectCssClass);
for
(
int
i
=
1
; i
<=
DateTime.DaysInMonth(
this
.Date.Year,
this
.Date.Month); i
++
) {
if
(i
==
this
.Date.Day) { sb.AppendFormat(
"
<option value="{0}" selected>{0}</option>
"
, i); }
else
{ sb.AppendFormat(
"
<option value="{0}">{0}</option>
"
, i); } } sb.AppendFormat(
"
</select>{0}
"
,
this
.DayTitle);
return
sb.ToString(); }
#endregion
#region
override RenderChildren
protected
override
void
RenderChildren(HtmlTextWriter writer) { writer.Write(
this
.BuildJScript()); writer.Write(
this
.BuildHtmlElement());
base
.RenderChildren(writer); }
#endregion
}}
转载请注明原文地址: https://ibbs.8miu.com/read-9905.html