2009-08-19 33 views
1

ボタンをクリックすると実行時にドロップダウンリストが作成されました。動的ドロップダウンリストから選択したテキストを取得するために別のボタンをパースしました。ドロップダウンリストから選択したテキストを取得しようとすると、オブジェクト参照が設定されていない場合、以下は私のコードです。asp.netの動的ドロップダウンリスト

TableRow tr; 
    TableCell tc; 
    DropDownList dp; 
    TextBox txt; 
    protected void Button1_Click(object sender, EventArgs e) 
    { 

     int no = int.Parse(TextBox1.Text); 
     for (int i = 0; i < no; i++) 
     { 
      tr = new TableRow(); 
      tr.BorderStyle = BorderStyle.Groove; 
      for (int j = 0; j < 1; j++) 
      { 
       tc = new TableCell(); 
       tc.BorderStyle = BorderStyle.Groove; 
       dp = new DropDownList(); 
       //form1.Controls.Add(dp); 
       txt = new TextBox(); 
       dp.Items.Add("hello"); 
       tc.Controls.Add(dp); 
       tc.Controls.Add(txt); 
       tr.Cells.Add(tc); 
      } 

      Table1.Rows.Add(tr); 

     } 
    } 
    protected void Button2_Click(object sender, EventArgs e) 
    { 

     TextBox1.Text =((DropDownList)this.FindControl("dp")).SelectedItem.Text; 


    } 

答えて

4

このようにすることはできません。すべての要求に応じて、の新しいページオブジェクトと、新しいのすべてのコントロールのコピーがあることに注意してください。動的に追加するコントロールは、毎回同じ方法で追加する必要があります。それ以外の場合は存在しません。

この場合、ボタンをクリックすると1度追加します。 button2をクリックすると、要求が生成され、button1ハンドラに追加されただけなので、ドロップダウンリストを持たない新しいページオブジェクトが作成されます。

最も簡単なことは、ページに通常のドロップダウンリストを追加するだけですが、Visibleをfalseに設定するだけです。そして、ボタン1をクリックすると、Visibleがtrueに設定されます。これにより、ドロップダウンリストが常に表示されます。

ダイナミックコントロールは難しいので、特にASP.Netを初めて使用する場合は、可能な限り避けてください。

0

実は、私はその後、私は先に表作成のデータセットを作成した。..

それを動作させることができました:

tc = new TableCell(); 
    dd= new DropDownList(); 
    ddl.ID = dd1; 

    foreach (DataRow dr in dst.Tables[0].Rows) 
    { 
     ddl.Items.Add(new ListItem(dr["Text"].ToString(),dr["Value"].ToString())); 
    } 
    tcActions.Controls.Add(ddlActions); 

私は専門家か何かじゃない、私だけでつつきます私はそれが私が望むことをするまでそれで。

関連する問題