自定義日期輸入控制項 解決需要使用者輸入日期的麻煩控制

2021-04-08 12:26:44 字數 3719 閱讀 1069

一般情況下使用文字框的,由於但無法很好的控制使用者輸入的格式通常都會寫乙個輸入格式的說明如: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控制項的最基本...