2011-10-19 18 views
0

私はいくつかの子コントロールを含むEditItemTemplateでFormViewコントロール(myFormView)を使用しています。私は標準ASP.Net DropDownListコントロール(myDropList)を使用する場合、私は以下の行を使用してmyDropListへの参照を取得することができる:ASP.Net FormViewコントロール内の子コントロールへのアクセス

((DropDownList)myFormView.FindControl("myDropList")) 

IフルmyDropListのプロパティにアクセスし、現在選択された値を得ることができます。これは素晴らしい。

ただし、FormViewコントロールでサードパーティ製の子コントロール(ここではhttp://www.freetextbox.comにあるFreeTextBox)を使用する必要があります。しかし、これはnullを返しますので、私は、このためのプロパティ値を取得するために有効だ

((FreeTextBox)myFormView.FindControl("myFTB")) 

:私は、FreeTextBoxコントロールmyFTBと呼ばれてきたと私は上記のような文を使用しています。

nullを返す理由を知っている人はいますか?コントロールへの参照を取得する他の方法がありますか?

TIA

答えて

0

あなたがコントロール階層内のコントロールを見つけるために、再帰を使用する必要があります。

次のメソッドを使用してみてください:

FreeTextBox textBox = (FreeTextBox)FindControl(myFormView, "myFTB"); 

... 

private Control FindControl(Control parent, string id) 
{ 
    foreach (Control child in parent.Controls) 
    { 
     string childId = string.Empty; 
     if (child.ID != null) 
     { 
      childId = child.ID; 
     } 

     if (childId.ToLower() == id.ToLower()) 
     { 
      return child; 
     } 
     else 
     { 
      if (child.HasControls()) 
      { 
       Control response = FindControl(child, id); 
       if (response != null) 
        return response; 
      } 
     } 
    } 

    return null; 
} 
0

フォームビューでコントロールを見つけるために、このように行うことができます....

注:以下のコードフォームビュー内のすべてのテキストボックスを見つけるに制御

protected void FormView1_DataBound(object sender, EventArgs e) 
{ 
     if (FormView1.CurrentMode == FormViewMode.Edit) 
     { 
      FindAllTextBoxes(FormView1); 
     } 
} 

private void FindAllTextBoxes(Control parent) 
{ 
     foreach (Control c in parent.Controls) 
     { 
      if (c.GetType().ToString() == "System.Web.UI.WebControls.TextBox") 
      { 
       TextBox tbox = c as TextBox; 
       if (tbox != null) 
       { 
        // textbox found ....you could send this textbox, by reference to another procedure that assigns the values comparing 
        //it by tbox.ID 
       } 
      } 
      if (c.Controls.Count > 0) 
      { 
       FindAllTextBoxes(c); 
      } 
     } 
    } 

私はそれはあなたが...

に役立ちますことを願っています
関連する問題