2016-05-05 35 views
0

問題が発生しましたが、グーグルで試しましたが、解決策が見つかりませんでした。動的に作成されたTextBoxの値とASP.NETのDropDownListを取得する

私はPage_Loadでコントロールを動的に作成しました。固定ボタンがあります。

ボタンをクリックすると、そのコントロールでユーザー入力を取得する必要があります。

コントロールの一意のIDを使用してコントロールにアクセスしようとすると、実行時にコントロールが使用できないため、エラーが返されます。 :(Forループ

を - 私はFindControlBtn_clickで関数を行う場合であっても

if (dr["Type"].ToString().Trim() == "DropDown") 
    { 
     DropDownList ddl = new DropDownList(); 
     ddl.Id = "ddl" + Convert.ToString(Counter); 
     ddl.DataTextField = "Text"; 
     ddl.DataValueField = "Value"; 
     ddl.DataSource = ds1; 
     ddl.DataBind(); 
     ddl.EnableViewState = true; 
     cell.Controls.Add(ddl); 
    } 
    else if (dr["QuestionType"].ToString().Trim() == "TextBox") 
    { 
     TextBox txt = new TextBox(); 
     txt.ID = "txt" + Convert.ToString(Counter); 
     txt.EnableViewState = true; 
     cell.Controls.Add(txt); 
    } 
    row.Cells.Add(cell); 
    table.Rows.Add(row); 

開始し、それはパネルが0のコントロールを持っていることを言う

var textbox = (TextBox)pnlMidTermFeedback.FindControl("txt5"); 

テキストボックスは、私が、常にNULLです。制御txt5を持っている。私はF12を行うとき、私はそれを見ることができます。

Pリースヘルプ。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     // Set values and properties of controls specified in markup 
     ... 
    } 

    // Create new controls and add them to the panel 
    ... 
} 

彼らは、ボタンのイベントハンドラで利用できるようになり、ユーザーが入力したデータが含まれています。

+0

私は、コントロールの詳細をViewstateに暗黙的に追加して解決しました。 –

答えて

0

動的に作成されたコントロールは、すべてのポストバックに再作成する必要があります。

関連する問題