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

首頁 > 編程 > .NET > 正文

為ASP.NET組件加上Collection集合屬性(C#)

2024-07-10 13:00:17
字體:
供稿:網(wǎng)友
大家可能都用過asp.net中的dropdownlist控件,該控件有一個items的集合屬性,用于設(shè)置組合框的下拉選項。這種體貼的做法讓用戶倍感溫馨,現(xiàn)在,我們也發(fā)揮一下自己的的才智,創(chuàng)建一個相同功能的屬性。

我們將要創(chuàng)建的控件叫webpanel,該控件用于網(wǎng)站導(dǎo)航,并且可以收縮,外觀如下:



第一個圖是未收縮的效果,第二個是收縮后的效果,雖然不炫,但是足可以說明問題了。

接下來再看一幅圖:




這里,就是collection屬性的編輯器,今天我們就圍繞這種效果展開話題。



在上面的collection屬性的編輯器中,主要分成兩個部分,左邊的部分是對象的集合,右邊部分是選定對象的屬性,我們可以對每個屬性進行設(shè)置賦值。



首先,我們定義一個類:stringitem,該類有兩個自定義屬性:text用于顯示的文本,hypertext是導(dǎo)航的超鏈接。

using system;

using system.web.ui;



namespace nswebpanel

{

/// <summary>

/// stringitem 的摘要說明。

/// </summary>

///

public class stringitem : system.web.ui.control , istatemanager

{

private string _text;

private string _hypertext;



public stringitem()

{

//

// todo: 在此處添加構(gòu)造函數(shù)邏輯

//

}



public string text

{

set

{

_text = value;

}

get

{

return _text;

}

}



public string hypertext

{

set

{

_hypertext = value;

}

get

{

return _hypertext;

}

}

#region istatemanager 成員



void istatemanager.trackviewstate()

{

base.trackviewstate();

}



bool istatemanager.istrackingviewstate

{

get

{

return base.istrackingviewstate;

}

}



object istatemanager.saveviewstate()

{

return base.saveviewstate();

}



void istatemanager.loadviewstate(object state)

{

base.loadviewstate(state);

}



#endregion

}

}



然后,再創(chuàng)建一個用于存放多個stringitem對象的類:stringitems,需要注意的是:該類要繼承collectionbase,這樣才能使用默認(rèn)的collection屬性編輯器。

using system;

using system.collections;

using system.web.ui;



namespace nswebpanel

{

/// <summary>

/// stringitems 的摘要說明。

/// </summary>

public class stringitems : collectionbase , istatemanager

{

private bool marked;



public stringitems() : base()

{

//

// todo: 在此處添加構(gòu)造函數(shù)邏輯

//

}



private void initialize()

{

marked = false;

}



public stringitem this[int index]

{

get

{

return (stringitem)base.list[index];

}

set

{

list[index] = value;

}

}



public void add(stringitem aitem)

{

base.list.add(aitem);

}



public void remove(int index)

{

if(index < base.count - 1 && index > 0 )

{

base.list.removeat(index);

}

}

#region istatemanager 成員



void istatemanager.trackviewstate()

{

for(int i = 0 ; i < base.list.count; i ++)

{

((istatemanager)base.list[i]).trackviewstate();

}

}



bool istatemanager.istrackingviewstate

{

get

{

return marked;

}

}



object istatemanager.saveviewstate()

{

object[] istate = new object[base.list.count];

for(int i = 0 ; i < base.list.count; i ++)

{

istate[i] = ((istatemanager)base.list[i]).saveviewstate();

}

return istate;

}



void istatemanager.loadviewstate(object state)

{

if(state != null)

{

object[] viewstate = (object[])state;

for(int i = 0 ; i < viewstate.length ; i ++)

{

((istatemanager)list[i]).loadviewstate(viewstate[i]);

}

}

}

#endregion

}

}

最后,新建一個web控件庫,名稱為:nswebpanel,以下是源代碼:

using system;

using system.web.ui;

using system.collections;

using system.web.ui.webcontrols;

using system.componentmodel;



namespace nswebpanel

{

/// <summary>

/// webcustomcontrol1 的摘要說明。

/// </summary>



public class webcustomcontrol1 : system.web.ui.webcontrols.webcontrol,inamingcontainer,istatemanager

{

private const string script = "<table id='t' border='1' width='228' height='145' bordercolor='#000000' cellspacing='0' cellpadding='0' bordercolorlight='#000000' bordercolordark='#ffffff'>/n" +

"<tr>/n" +

"<td width='228' height='20'>/n" +

"<table border='0' width='100%' cellpadding='0' cellspacing='0'>/n" +

"<tr>/n" +

"<td width='10%' bgcolor='#ccccff' id='sign' onmousedown='shink()' align='center' style='cursor: hand; font-family: webdings'>5</td>/n" +

"<td width='90%' style='font-size:14px'>/n" +

"<p align='center'>{0}</td>/n" +

"</tr>/n" +

"</table>/n" +

"</td>/n" +

"</tr>/n" +

"<tr id='downblock'>/n" +

"<td width='228' height='113'>/n" +



"<table border='0' cellpadding='0' cellspacing='0' width='100%' height='106' style='font-size:14px'>/n" +

"<tr>/n" +

"<td width='100%' align='center' height='21' id='tr1'><a target='_blank' href='{6}'>{1}</a></td>/n" +

"</tr>/n" +

"<tr>/n" +

"<td width='100%' align='center' height='21' id='tr2'><a target='_blank' href='{7}'>{2}</a></td>/n" +

"</tr>/n" +

"<tr>/n" +

"<td width='100%' align='center' height='21' id='tr3'><a target='_blank' href='{8}'>{3}</a></td>/n" +

"</tr>/n" +

"<tr>/n" +

"<td width='100%' align='center' height='21' id='tr4'><a target='_blank' href='{9}'>{4}</a></td>/n" +

"</tr>/n" +

"<tr>/n" +

"<td width='100%' align='center' height='22' id='tr5'><a target='_blank' href='{10}'>{5}</a></td>/n" +

"</tr>/n" +

"</table>/n" +



"</td>/n" +

"</tr>/n" +

"</table>";



private const string javascript = "<script language='javascript'>/n" +

"var flag = true;/n" +

"function shink()/n" +

"{/n" +

"if(flag) /n" +

"{/n" +

"document.all.downblock.style.display = 'none';/n" +

"document.all.sign.innertext = '6';/n" +

"document.all.t.height = 20;/n" +

"} /n" +

"else/n" +

"{/n" +

"document.all.downblock.style.display = 'block';/n" +

"document.all.sign.innertext = '5';/n" +

"}/n" +



"flag = !flag;/n" +

"}/n" +

"</script>/n";





private stringitems _strings;

//注意下面紅色的部分,一定要寫哦

[

persistencemode(persistencemode.innerproperty),

designerserializationvisibility(designerserializationvisibility.content)

]

public stringitems strings

{

get

{

if(_strings == null)

_strings = new stringitems();

return _strings;

}



}



private string _caption;

public string caption

{

get

{

return _caption;

}

set

{

_caption = value;

}

}



#region 事件



private static object _fieldevent = null;

public event system.eventhandler processevent

{

add

{

events.addhandler(_fieldevent,value);

}

remove

{

events.removehandler(_fieldevent,value);

}

}



#endregion



public void execute()

{

eventhandler hander = (eventhandler)events[_fieldevent];

if(hander != null)

{

hander(this,null);

}

}



public override void renderbegintag(htmltextwriter writer)

{

base.renderbegintag (writer);

system.text.stringbuilder str = new system.text.stringbuilder();

str.appendformat(script,this.caption,_strings[0].text,_strings[1].text,_strings[2].text,_strings[3].text,_strings[4].text,_strings[0].hypertext,_strings[1].hypertext,_strings[2].hypertext,_strings[3].hypertext,_strings[4].hypertext);

writer.writeline(str.tostring());

}



protected override void onprerender(eventargs e)

{

base.onprerender (e);

if(!page.isclientscriptblockregistered("13c165f4-db2e-4484-ab1b-5b1f32c8fc8b"))

{

page.registerclientscriptblock("13c165f4-db2e-4484-ab1b-5b1f32c8fc8b",javascript);

}

}





public override string clientid

{

get

{

return base.clientid + "lzh";

}

}



protected override void addattributestorender(htmltextwriter writer)

{

base.addattributestorender (writer);

writer.addstyleattribute("font-size","14px");

}







protected override htmltextwritertag tagkey

{

get

{

return htmltextwritertag.div;

}

}

#region istatemanager 成員



void istatemanager.trackviewstate()

{

base.trackviewstate();



}



bool istatemanager.istrackingviewstate

{

get

{

// todo: 添加 webcustomcontrol1.istrackingviewstate getter 實現(xiàn)

return false;

}

}



object istatemanager.saveviewstate()

{

// todo: 添加 webcustomcontrol1.saveviewstate 實現(xiàn)

return null;

}



void istatemanager.loadviewstate(object state)

{

// todo: 添加 webcustomcontrol1.loadviewstate 實現(xiàn)

}



#endregion

}

}



注冊會員,創(chuàng)建你的web開發(fā)資料庫,
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 牡丹江市| 共和县| 铜陵市| 万载县| 黄浦区| 开江县| 扶沟县| 琼中| 慈利县| 乌鲁木齐县| 苍南县| 磴口县| 农安县| 怀仁县| 晋州市| 岚皋县| 平乐县| 迁安市| 湛江市| 洞口县| 启东市| 咸宁市| 旅游| 安化县| 钦州市| 江津市| 栾川县| 东阳市| 屏山县| 北流市| 宁明县| 乐至县| 始兴县| 孟州市| 鹰潭市| 皋兰县| 伊金霍洛旗| 保定市| 封开县| 达孜县| 大方县|