私の最初の目標は、次のことを達成することです。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 パーツにレンダリングし、エディター パーツから管理 (テキスト、可視性、幅、高さなどを変更) できますか。?
アイデアはありますか?