2011-06-23 43 views
0

いくつかのプロパティを動的に設定できるWebPartをSharepoint用にプログラミングしました。この規範は、WebパーツSharepointでプロパティを動的に設定するには?

は以下の通りです:

private void SetValues() 
    { 
     int counter = 0; 
     Control userControl = this.Controls[0]; 
     for (int i=0; i<userControl.Controls.Count; i++) { 
     //foreach (Control element in userControl.Controls) { 
      Control element = userControl.Controls[i]; 
      if (element is Button) 
      { 
       Button button = (Button)element; 
       if (counter < 9) 
       { 
        button.Text = _buttonCaptions[counter]; 
        element = button; 
       } 
       counter++; 
      } 
     } 

    } 

    #endregion Properties 

    #region Methods 

    protected override void CreateChildControls() 
    { 
     Control control = Page.LoadControl(_ascxPath); 
     Controls.Add(control); 

     SetValues(); 
    } 

プロパティは、SharePointに示されており、これらの値を編集するときに「SetValuesは()」 - メソッドが呼び出されます。しかし、プログラムを停止してコードを再コンパイルするまで、Buttontextは更新されません。ウェブサイトのリロードでさえ助けにならない。

デバッグ時に「button.Text」が正しく割り当てられていることがわかります。

ヒント?

[編集]解答2へ おかげで、私はそれを次のように変更:

protected override void CreateChildControls() 
    { 
     Control control = Page.LoadControl(_ascxPath); 
     SetValues(control);   
     Controls.Add(control);   
    } 

答えて

2

setvaluesメソッドの後にコントロールControls.Add(control)を追加してみましたか...

+0

ありがとうございます。それが正しい方向に向かうのを助けていました。 –

0

はControls.Addを呼び出す前に、パラメータとして制御してSetValuesを呼び出してみを - Webパーツコントロールにユーザーコントロールを追加しますコレクションにいくつかの副作用があり、コードが期待通りの順序で実行されないことがあります。

また、オブジェクトキャッシュまたはプリコンパイルの設定にデフォルト以外の値があるかどうかを確認してください。

関連する問題