2011-01-05 2 views
0

TreeViewコントロールを含むWebパーツを作成しようとしています。 MyCheckboxという名前のWebパーツboolプロパティがあり、これを使用してツリービューに表示するノードを決定します。SharePointのツリービューコントロール - Webパーツのプロパティを更新するときに更新されません。

私が抱えている問題は、Webパーツプロパティ( "共有Webパーツの変更..")、MyCheckBox bool、および "OK"を押したプロパティを変更すると、ツリービューが更新されないということです。しかし、私がページを参照すると、ツリービューが更新されます。

次のように私は、メンバ変数としてツリービューとそのルートノードを使用して、クラスを宣言しています:

私はリストをクリアし、ポストバックをチェックしようとした
public class MyWebPart : System.Web.UI.WebControls.WebParts.WebPart 
{ 
    private TreeView tree = new TreeView(); 
    private TreeNode rootNode; 

    [WebBrowsable(true)]  
    [Personalizable(PersonalizationScope.Shared)] 
    public bool MyCheckBox 
    { 
     get { return _myCheckBox; } 
     set { _myCheckBox = value; } 
    } 

    private bool __myCheckBox = false; 


    public MyWebPart() 
    { 
    } 

    public override void RenderControl(HtmlTextWriter writer) 
    { 
     tree.RenderControl(writer); 
    } 

    protected override void CreateChildControls() 
    { 
     rootNode = new TreeNode("ExampleRootNode"); 

     for (int x = 0; x < 3; x++) 
     { 
      TreeNode listNode = new TreeNode(x.ToString()); 
      rootNode.ChildNodes.Add(listNode); 
     } 

     if (_myCheckBox) 
     { 
      TreeNode listNode = new TreeNode("Final entry"); 
      rootNode.ChildNodes.Add(listNode); 
     } 

     tree.Nodes.Add(rootNode); 
     this.Controls.Add(tree);   
    } 

    protected override void Render(HtmlTextWriter writer) 
    {   
     base.Render(writer); 
    } 
} 

、100万他のもの。私は何かが欠けているに違いないと確信しています!

答えて

0

これは、ASP.NETのページ/制御ライフサイクルのためです。 webpartへのeditorpart(ブラウズ可能なプロパティは基本的にon the fly editorpartセクションが作成されています)からwebpartへのプロパティの書き込みは、webpartのCreateChildCOntrolsが呼び出されたとき、つまりポストバックイベントの処理時より後の段階で行われます。

参考として、この画像を参照してください。alt text

+0

これを修正できますか?一般的には無視してページを更新します。 –

+0

コリン、お返事ありがとうございます。非常に有用な画像も。私はそれを印刷しました。私はキットと同じ問題を抱えていると思います:結果を変えるためにできることは何ですか? – Tristan

+0

createchildcontrolsにあるツリービューの作成に関連するコードをRenderContentsに移動しようとすることができます – Colin

関連する問題