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

























????
??? 要注意的一點(diǎn)就是這個(gè)屬性是隱藏的,因?yàn)槲覀儾恍枰詭У腤ebPart顯示出來,所以將Browsable設(shè)置成false。
??? 然后我們就需要在ToolPart中畫出我們需要的文本框了。畫出這個(gè)ToolPart的方法大家都很熟悉了,就是RenderToolPart代碼如下:
















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














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












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