??? 首先我們知道,屬性都是保存在WebPart中,所以我們需要在WebPart中建立相應屬性來保存此值,如下:
????

























????
??? 要注意的一點就是這個屬性是隱藏的,因為我們不需要自帶的WebPart顯示出來,所以將Browsable設置成false。
??? 然后我們就需要在ToolPart中畫出我們需要的文本框了。畫出這個ToolPart的方法大家都很熟悉了,就是RenderToolPart代碼如下:
















??? 在這段代碼中,ToolPane tp = this.ParentToolPane是得到ToolPart所在的ToolPane,然后通過ToolPane.SelectedWebPart得到當前的WebPart,然后通過WebPart.Text得到我們的那個隱藏值,這個隱藏值就是文本框的初始值。這個inputname的變量是做為文本框的name。是在這個ToolPart類中聲明的,如下:
??? string inputname = null;
??? 然后通過構造函數捕捉初始化事件:














??? 在初始化函數中設置inputname的值,這個值只要是一個唯一的就可以了,所以借助了UniqueID。
??? 這是呈現,那么如何在用戶填寫了以后保存起來這個值呢?也即保存到我們WebPart中那個隱藏的Text屬性中。這就要通過ToolPart類中的ApplyChanges()方法,這是點擊了確定確認了修改的時候執行的方法。代碼如下:
????












??? 通過這段代碼我們可以看到,采用Page.Request.Form[inputname]得到輸入在文本框中的值,然后賦值給隱藏域。
??? 這種自定義屬性有什么好處呢?在于你可以控制ToolPart的輸出,比如你可以做一些特殊的控件讓用戶方便的輸入屬性等。或者你可以更改文本框的背景色或者前景色,也即你自己控制的力度加大了。
摘自海洋工作室(
http://sps.oceanstudio.net
)