国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

DatePicker(日期選擇自定義服務(wù)器控件)的實(shí)現(xiàn)

2024-07-21 02:23:23
字體:
供稿:網(wǎng)友

在dotnet中有用戶自定義控件(.ascx)和服務(wù)器控件(程序代碼)

webcontrol 類提供所有 web 服務(wù)器控件的公共屬性、方法和事件。通過設(shè)置在此類中定義的屬性,可以控制 web 服務(wù)器控件的外觀和行為。

例如在community中datepicker控件的實(shí)現(xiàn)

public class datepicker : webcontrol, inamingcontainer {

dropdownlist dropmonth;

dropdownlist dropday;

dropdownlist dropyear;



public int month {

get {

if (viewstate["month"] == null)

return datetime.now.month;

else

return (int)viewstate["month"];

}

set { viewstate["month"] = value; }

}



public int day {

get {

if (viewstate["day"] == null)

return datetime.now.day;

else

return (int)viewstate["day"];

}

set { viewstate["day"] = value; }

}



public int year {

get {

if (viewstate["year"] == null)

return datetime.now.year;

else

return (int)viewstate["year"];

}

set {

viewstate["year"] = value;

}

}



public datetime date {

get {

//確定服務(wù)器控件是否包含子控件。如果不包含,則創(chuàng)建子控件。

ensurechildcontrols();



int _year = int32.parse(dropyear.selecteditem.value);

int _month = int32.parse(dropmonth.selecteditem.value);

int _day = int32.parse(dropday.selecteditem.value);



if (_day > datetime.daysinmonth(_year, _month) )

throw new argumentexception("invalid date!");



return new datetime

(

_year,

_month,

_day

);

}

set {

month = value.month;

day = value.day;

year = value.year;

}

}



/// <summary>

/// 通知使用基于合成的實(shí)現(xiàn)的服務(wù)器控件創(chuàng)建它們包含的任何子控件,以便為回發(fā)或呈現(xiàn)做準(zhǔn)備。

/// 當(dāng)開發(fā)復(fù)合服務(wù)器控件或模板服務(wù)器控件時(shí),必須重寫此方法。

/// </summary>

protected override void createchildcontrols() {

dropmonth = new dropdownlist();

controls.add(dropmonth);



dropday = new dropdownlist();

controls.add(dropday);



dropyear = new dropdownlist();

controls.add(dropyear);



if (!page.ispostback) {

// get a datetimeformatinfo object

datetimeformatinfo objdateinfo = datetimeformatinfo.currentinfo;



// display months

for (int i=1;i<objdateinfo.monthnames.length;i++)

dropmonth.items.add(new listitem(objdateinfo.getmonthname(i), i.tostring()));



// display days

for (int i=1;i<32;i++)

dropday.items.add(i.tostring());



// display years

for (int i=datetime.now.year - 5;i<datetime.now.year+5;i++)

dropyear.items.add(i.tostring());





dropmonth.items.findbyvalue(month.tostring()).selected = true;

dropday.items.findbyvalue(day.tostring()).selected = true;

dropyear.items.findbyvalue(year.tostring()).selected = true;

}



}



/// <summary>

/// 將服務(wù)器控件內(nèi)容發(fā)送到提供的 htmltextwriter 對象,此對象編寫將在客戶端呈現(xiàn)的內(nèi)容。

/// 在開發(fā)自定義服務(wù)器控件時(shí),可以重寫此方法以生成 asp.net 頁的內(nèi)容。

/// </summary>

/// <param name="tw">htmltextwriter 對象</param>

protected override void render(htmltextwriter tw) {

// get date parts

string[] dateparts;

try {

datetimeformatinfo objdateinfo = datetimeformatinfo.currentinfo;

//modify by yukh ,because in some objdateinfo.shortdatepattern seperate by "-" eg: yyyy-m-d

if (objdateinfo.shortdatepattern.indexof("/")>0)

dateparts = objdateinfo.shortdatepattern.split('/');

else

dateparts = objdateinfo.shortdatepattern.split('-');



}

catch {

dateparts = new string[]{"m","d","y"};

}

tw.renderbegintag(htmltextwritertag.table);

tw.renderbegintag(htmltextwritertag.tr);

tw.renderbegintag(htmltextwritertag.td);

renderdatepart(dateparts[0],tw);

tw.renderendtag();



tw.renderbegintag(htmltextwritertag.td);

renderdatepart(dateparts[1],tw);

tw.renderendtag();



tw.renderbegintag(htmltextwritertag.td);

renderdatepart(dateparts[2],tw);

tw.renderendtag();



tw.renderendtag(); // close row

tw.renderendtag(); // close table





}



private void renderdatepart(string datepart,htmltextwriter tw) {

datepart = datepart.tolower();



if (datepart.startswith("m"))

dropmonth.rendercontrol(tw); //將服務(wù)器控件子級的內(nèi)容輸出到提供的 htmltextwriter 對象,

//此對象編寫將在客戶端呈現(xiàn)的內(nèi)容。

else

if (datepart.startswith("d"))

dropday.rendercontrol(tw);

else

dropyear.rendercontrol(tw);

}

}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 绥中县| 大理市| 石门县| 石景山区| 万州区| 香河县| 普安县| 祥云县| 丁青县| 称多县| 丰台区| 雷波县| 靖宇县| 北安市| 阜新市| 剑阁县| 毕节市| 偏关县| 扎兰屯市| 于都县| 辛集市| 涿鹿县| 新平| 克拉玛依市| 寻乌县| 石狮市| 澜沧| 塔城市| 仙游县| 九台市| 桃江县| 维西| 当阳市| 济阳县| 蒲江县| 青神县| 南京市| 南乐县| 宁安市| 项城市| 湘潭县|