asp.net|控制項 ASP.NET自訂控制項是個很好的模型,可以在網頁中象堆積木般構築軟體,可以
使用大量的第三方控制項來完成自己不擅長的功能。但自訂控制項編寫起來有一定難度。
一直以來,如何在ASPX設計時頁面中保持子控制項的產生代碼問題因擾著我。近段研究了
一下微軟的IE Webcontrol中的TreeView控制項,終於搞清楚了此問題,不敢獨享,特將它
總結了一下,並做了個樣本工程,放在我網站上(http://www.aspxcontrol.com/blog)供網友
下載。
總結起來,要點如下:
1.將子控制項單獨定義為類,如public class noteItem{},為了不讓此子控制項在整個DLL被
拖入工具箱時不顯示,可以使用此特性:[ToolboxItem(false)]
2.子控制項應為集合類,引用System.Collection ,定義:
public class noteItemCollection:System.Collections.CollectionBase
3.實現成員:
Add(),this[int]。
4.在主類中定義加入特性:
[DesignerSerializationvisibility(DesignerSerializationvisibility.Content)]
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
[Editor(typeof(CollectionEditor),typeof(UITypeEditor))]
如果實現了自己的編輯器,可將typeof(CollectionEditor)換成自己的,可以是WinForm
的,可參考TreeView源碼。
5.在主類中定義一集合變數和一ArrayList變數,如:
private noteItemCollection _notes;
private ArrayList al;
在建構函式內寫:
{
al = new ArrayList();
_notes = new noteItemCollection(al);
}
這樣,在加了子控制項後,就會在ASPX的HTML頁面中加入類似:<waki:sample>
<waki:Note>
<waki:item id="1"></waki:item>
<waki:item id="2"></waki:item>
</waki:Note>
</waki:sample>這樣的代碼了,就可以避免讓使用者自己輸入XML代碼了。