如何动态设置Sharepoint中的属性?

时间:2011-06-23 16:04:04

标签: c# sharepoint properties web-parts

我为Sharepoint编写了一个WebPart,允许动态设置一些属性。

本Webparts的代码如下:

    private void SetValues()
    {
        int counter = 0;
        Control userControl = this.Controls[0];
        for (int i=0; i<userControl.Controls.Count; i++) {
        //foreach (Control element in userControl.Controls) {
            Control element = userControl.Controls[i];
            if (element is Button)
            {
                Button button = (Button)element;
                if (counter < 9)
                {
                    button.Text = _buttonCaptions[counter];
                    element = button;
                }
                counter++;
            }
        }

    }

    #endregion Properties

    #region Methods

    protected override void CreateChildControls()
    {
        Control control = Page.LoadControl(_ascxPath);
        Controls.Add(control);

        SetValues();
    }

属性显示在Sharepoint中,编辑这些值时,调用“SetValues()” - 方法。但是在我停止程序并重新编译代码之前,Buttontexts不会更新。即使是网站重新加载也无济于事。

调试时我可以看到“button.Text”分配正确。

有任何线索吗?

[编辑] 感谢答案2,我通过以下方式进行了更改:

 protected override void CreateChildControls()
    {
        Control control = Page.LoadControl(_ascxPath);
        SetValues(control);          
        Controls.Add(control);           
   }

2 个答案:

答案 0 :(得分:2)

您是否尝试在setvalues方法之后添加控件Controls.Add(control) ...

答案 1 :(得分:0)

在调用Controls.Add之前尝试使用控件作为参数调用SetValues - 将用户控件添加到Web部件控件集合可能会产生一些副作用,并且代码可能无法按照您期望的顺序执行。

另外,检查对象缓存或预编译的设置中是否有任何非默认值。