一般情況下使用文字框的,由於但無法很好的控制使用者輸入的格式通常都會寫乙個輸入格式的說明如:1999-12-12,雖然用多個組合的下拉列表可以解決問題,但是似乎不太方便操作。後來用梅花雨的日期控制項,確實很好用,並且樣式也很好控制,梅花雨使用了比較複雜的客戶端控制**實現了很美好的使用者感受(不知道現在的版本是否解決),但是當需要輸入日期的控制項存在於框架中的時候會出現客戶端的錯誤。
在一般的專案中需要輸入日期的地方只是引導使用者正確的輸入正確的日期格式以及驗證。因此自己些了個簡單使用的.net webform下的日期控制項。功能方面提供日期選單的定位、樣式、以及跨度,但為了靈活控制目前沒有做驗證,通過修改限制使用者輸入或則增加正規表示式的判斷即可進行使用者輸入的控制。
以下是原始碼部分:
using
system;
using
system.web.ui;
using
system.web.ui.webcontrols;
using
system.componentmodel;
using
system.text;
using
system.collections;
using
system.collections.specialized;
namespace
publiccontrols
set }
[description("
文字框寬度")]
public unit width
set }
[description("
文字框高度")]
public unit height
set }
[description("
日期字串")]
public
string text
set }
[description("
起始年份")]
public
int startyear
set }
[description("
年份跨度")]
public
int steps
set }
[description("
背景css樣式")]
public
string divcssclass
set }
[description("
文字css樣式")]
public
string fontcssclass
set }
[description("
文字框css樣式")]
public
string textboxcssclass
set }
[description("
模板樣式")]
public tempstyle template
else
viewstate["template"]=template; }
get }
[description("x
方向偏移量")]
public
int excursionx
set }
[description("y
方向偏移量")]
public
int excursiony
set }
#endregion
#region
事件和方法
public
bool loadpostdata(string postdatakey, namevaluecollection values)
else
}
public
void raisepostbackevent(string e)
public
void raisepostdatachangedevent()
///
/// 將事件委託給所呼叫的頁面
///
public
void valuechanged()
}
#endregion
#region輸出
//////
將此控制項呈現給指定的輸出引數。
///
///
要寫出到的 html 編寫器
protected
override
void render(htmltextwriter output)
else }
// 組合月部分
請選擇月份:
");
j=1;
for(int i=0;i<12;i++)
else
} //
組合日部分
請選擇日期:
");
j=1;
for(int i=0;i<31;i++)
else
if(j==8)
else
}
");
view.replace("$textboxid$",this.uniqueid.tostring());
view.replace("$sign$",this.uniqueid.tostring()+"_sign");
view.replace("$show$",this.uniqueid.tostring()+"_show");
view.replace("$excursionx$",this.excursionx.tostring());
view.replace("$excursiony$",this.excursiony.tostring());
output.write(view); }
#endregion
#region
其他函式
public
bool isnumeric(object obj)
// 迴圈檢查每個字元
foreach(char c in str)
}
return
true; }
public
enum tempstyle
public
string cssstring(tempstyle ts)
font.templatecssclass
input.templatecssclass
-->
");
break;
case tempstyle.light:
div.templatecssclass
font.templatecssclass ,
οnmοuseοut=function()
) }
input.templatecssclass
-->
");
break; }
return css.tostring(); }
#endregion }
}
需要注意的是,當控制項在單頁面中的時候excursionx excursiony偏移屬性保持為0就可以了(當然如果你想設定不同的選單的位置設定其他數字也是可以的),當控制項在框架的時候,預設的偏移屬性會產生一定的偏差,這時調整偏移量屬性進行定位。
自定義使用者控制項
和做乙個web 窗體一樣,只是,如果引用其中的控制項的方法是如何?以下示例是asp.net 1.1裡的,2.0是怎麼引用,還沒有看書呢 string getddlyear,getddllc,getddladd,getddlpeopso getddlyear class ddlyear this.fi...
自定義使用者控制項
一 專案中新增web 使用者控制項字尾 ascx 注意字尾.ascx,它告訴網頁這是乙個使用者控制項。它沒有什麼特別含義,只是不讓iis去直接執行這段 二 在頁面上新增工具箱的自帶控制項 工具箱拖動控制項到頁面中 三 在後台新增相應執行邏輯及操作 四 重新生成解決方案 五 頁面開始使用 這段 輸出標...
自定義控制項VS使用者控制項
winform中,使用者控制項 user control 繼承自 usercontrol,主要用於開發 container 控制項,container控制項可以新增其他controls控制項 自定義控制項 custom control 繼承自 control,主要用於開發windows控制項的最基本...