我为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);
}
答案 0 :(得分:2)
您是否尝试在setvalues方法之后添加控件Controls.Add(control)
...
答案 1 :(得分:0)
在调用Controls.Add之前尝试使用控件作为参数调用SetValues - 将用户控件添加到Web部件控件集合可能会产生一些副作用,并且代码可能无法按照您期望的顺序执行。
另外,检查对象缓存或预编译的设置中是否有任何非默认值。