2

私の最初の目標は、次のことを達成することです。1. カスタム エディター Web パーツで動的 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;           
    }
 }

問題は非常に明確で正常です。
エディター Web パーツからテキストを変更した後、[OK] または [適用] ボタンをクリックすると、システムは最初に CustomWebpart.cs の CreateChildControls() イベントを起動してから、 ApplyChanges() を起動する前に、 CustomEditor.cs の CreateChildControls() を結果Webパーツのテキストボックスが時間通りに更新できません。

では、どうすれば asp.net サーバー側コントロールを Web パーツにレンダリングし、エディター パーツから管理 (テキスト、可視性、幅、高さなどを変更) できますか。?

アイデアはありますか?

4

0 に答える 0