首先我们知道,属性都是保存在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 )