我最初的目标是实现以下目标 1. 在自定义编辑器 webpart 中呈现动态 TextBox 2. 从编辑器部分管理 TextBox 的文本(、可见性、高度、宽度等)。3.我们可以考虑Sharepoint webpart或者asp.net webpart框架
我尝试了以下方式(使用 asp.net webpart 框架)但无法实现初始目标。
//CustomWebPart.cs
private string _text;
[WebBrowsable(false)]
[Personalizable(PersonalizationScope.Shared)]
public string Text
{
get { return _text; }
set { _text = value; }
}
protected override void CreateChildControls()
{
TextBox txt = new TextBox();
txt.Text = Text;
Controls.Add(txt);
}
//CustomEditor.cs
private TextBox txtExample;
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
txtExample= new TextBox();
}
protected override void CreateChildControls()
{
Controls.Add(txtExample);
}
public override bool ApplyChanges()
{
EnsureChildControls();
CustomWebPart part = WebPartToEdit as CustomWebPart;
if (part != null)
{
part.SqlQuery = txtExample.Text;
}
}
public override void SyncChanges()
{
EnsureChildControls();
CustomWebPart part = WebPartToEdit as CustomWebPart;
if (part != null)
{
txtExample.Text = part.SqlQuery;
}
}
问题非常清楚和正常:
一旦我单击 OK 或 Apply 按钮系统从编辑器 webpart 更改文本后,首先触发 CustomWebpart.cs 的 CreateChildControls() 事件,然后触发 ApplyChanges() 甚至在触发 CustomEditor.cs 的 CreateChildControls() 之前,作为结果 webpart 的文本框无法按时更新。
那么,我们如何在 webpart 中呈现 asp.net 服务器端控件并从编辑器部分管理(更改文本、可见性、宽度、高度等)。?
有什么想法吗?