2

我最初的目标是实现以下目标 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 服务器端控件并从编辑器部分管理(更改文本、可见性、宽度、高度等)。?

有什么想法吗?

4

0 回答 0