posts - 5,  comments - 5,  trackbacks - 0
  我们在自定义的ToolPart中定义了一个文本框的字符串属性。

    首先我们知道,属性都是保存在WebPart中,所以我们需要在WebPart中建立相应属性来保存此值,如下:

    

// 这个属性是隐藏的,主要用于接收自定义的ToolPart中的自定义属性的值
        [Browsable( false
),
            Category(
" Miscellaneous "
),
            DefaultValue(defaultText),
            WebPartStorage(Storage.Personal),
            FriendlyName(
" Text "
),
            Description(
" Text Property "
)]
        
public   string
 Text
        
{
            
get

            
{
                
return
 text;
            }


            
set

            
{
                text 
=
 value;
            }

        }


    
    要注意的一点就是这个属性是隐藏的,因为我们不需要自带的WebPart显示出来,所以将Browsable设置成false。

    然后我们就需要在ToolPart中画出我们需要的文本框了。画出这个ToolPart的方法大家都很熟悉了,就是RenderToolPart代码如下:


///   <summary>
        
///
 Render this tool part to the output parameter specified.
        
///   </summary>

        
///   <param name="output"> The HTML writer to write out to  </param>

         protected   override   void
 RenderToolPart(HtmlTextWriter output)
        
{
            ToolPane tp 
=   this
.ParentToolPane;
            CustomProps myWP 
=
 (CustomProps)tp.SelectedWebPart;
            
            output.Write(
" 请输入信息:<input name=\ ""  

                 +  inputname  +   " \ "  type = \ " text\ "  value = \ ""   +
 myWP.Text
                
+   " \ " >< BR > " );

        }



    在这段代码中,ToolPane tp = this.ParentToolPane是得到ToolPart所在的ToolPane,然后通过ToolPane.SelectedWebPart得到当前的WebPart,然后通过WebPart.Text得到我们的那个隐藏值,这个隐藏值就是文本框的初始值。这个inputname的变量是做为文本框的name。是在这个ToolPart类中声明的,如下:

    string inputname = null;

    然后通过构造函数捕捉初始化事件:


public  CustPropsToolPart()
        
{
            
this .Title  =   " 自定义属性的ToolPart "
;
            
this .Init  +=   new
 EventHandler(CustPropsToolPart_Init);
        }

private   void  CustPropsToolPart_Init( object
 sender, EventArgs e)
        
{
            
// 设置定义义属性的文本框的name

             this .inputname  =   this .UniqueID  +   " msg "
;
        }



    在初始化函数中设置inputname的值,这个值只要是一个唯一的就可以了,所以借助了UniqueID。

    这是呈现,那么如何在用户填写了以后保存起来这个值呢?也即保存到我们WebPart中那个隐藏的Text属性中。这就要通过ToolPart类中的ApplyChanges()方法,这是点击了确定确认了修改的时候执行的方法。代码如下:

    

public   override   void  ApplyChanges()
        
{
            
//
 Apply property values here.
            
// 得到WebPart对象

            ToolPane tp  =   this
.ParentToolPane;
            CustomProps myWP 
=
 (CustomProps)tp.SelectedWebPart;

            
// 将我们自定义的值传回到WebPart的Text属性中。

            myWP.Text  =
 Page.Request.Form[inputname];
        }



    通过这段代码我们可以看到,采用Page.Request.Form[inputname]得到输入在文本框中的值,然后赋值给隐藏域。

    这种自定义属性有什么好处呢?在于你可以控制ToolPart的输出,比如你可以做一些特殊的控件让用户方便的输入属性等。或者你可以更改文本框的背景色或者前景色,也即你自己控制的力度加大了。

摘自海洋工作室( http://sps.oceanstudio.net

posted on 2006-11-28 00:36 曾科 阅读(234) 评论(0)  编辑  收藏 所属分类: SharePoint Portal Server

只有注册用户登录后才能发表评论。


网站导航:
 
<2024年6月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用链接

留言簿(3)

随笔档案

文章分类

文章档案

相册

.net

搜索

  •  

最新评论

阅读排行榜

评论排行榜