2012-04-13 5 views
1

私はMain.Master、内部マスターページInner.Master、およびabc.aspxを持っています。 Inner.Masterには、Inner.Masterページの読み込みにドロップダウンリストddlChildrenがあります。コントロールはページ(.Net)に追加され、マスターページコントロールを参照します。

私がしたい、ロードページabc.aspxに、私は、そのマスターページからInner.MasterをddlChildrenへのアクセスを取得:

int x = Int32.Parse(((DropDownList)this.Parent.FindControl("ddlChildren")).SelectedValue); 

私はabc.aspxのページロードでこれをやっています。問題は、このコントロールが見つからないということです。

this.Parent.Controls.Count 

デバッグ時に、私は唯一のInner.Master 1つの制御、そのMain.Masterを持っている:私は、コントロールもInner.Masterにはまだロードされていないbecuase私が行うときので、これは、起こると思います。

その後、私はddlChildren onPreRenderを呼び出そうとしましたが、同じHappenです。

http://msdn.microsoft.com/en-us/library/ms178472.aspxによれば、コントロールはプレレンダリング時にロードされますが、内部マスターのオンプレレンダリングはAFTER abc.aspxと呼ばれます。私は別のページステージでこれを行うことができますか?

私は完全にオフトラックですか?

+0

内部マスターのHTMLコードを投稿できますか? – Pankaj

答えて

1

Visual breakdown of the lifecycle, including master pages.

OK、私はもっとここで起こっがあると思います。

まず第1にFindControlは、あなたが探しているものが問題のオブジェクトの直接の子でない限り、再帰的ではありません。見つからないでしょう。

あなたがこの(テストしたが、私は前にそれのようなものを書いていない)のような関数に何か必要があります

private WebControl FindControlRecursive(WebControl parentControl, string controlId) 
{ 
    if(!parentControl.Controls.Any()) 
     return null; 

    var foundControl = parentControl.FindControl(controlId); 

    if(foundControl == null) 
    { 
     foreach(child in parentControl.Controls) 
     { 
      var foundChild = FindControlRecursive(child, controlId); 

      if(foundChild != null) 
       return foundChild;  
     } 
    } 

    return foundControl; 
} 

を第二に、あなたはあなたのページのParentは、マスターページであると仮定しています。これは当てはまりません。詳細 hereを試してください。

ので、締結すること、この試してみてください。

var dropDown = (DropDownList)FindControlRecursive(Page.MasterPage, "ddlChildren"); 

もう一つを。通常は、現在のページスコープより上のレベルにあるコントロールにアクセスする場合は、デザインを再考することをお勧めします。

+0

正確な根本原因を説明できますか?ありがとう。 – Pankaj

+0

あなたの答えは私の友人にありがとうございます:だから、私はブレークポイントにいて、this.Master.Controls.Countはまだ1つのコントロールを持っています:/私はちょっと試してみましょう – test

+0

それはまさに私のポイントです。 'Master.Controls'には1つのコントロールしかありませんが、' Master.Controls [0] .Controls'には何がありますか?あなたはあなたが探しているものを見つけるために掘り下げなければならないかもしれません。 – SouthShoreAK

関連する問題