2016-05-02 19 views
1

私は動的に5ドロップダウンリストを作成しました。それは私がすでに動的に操作する方法ASP.NETのドロップダウンコントロールを作成する

私は動的にそれぞれの新しい5ドロップダウンを作成するためにこのコードを使用するにはどうすればよい
if (!this.IsPostBack) 
     { 
      string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; 
      using (SqlConnection con = new SqlConnection(constr)) 
      { 
       using (SqlCommand cmd = new SqlCommand("SELECT ID, Name FROM RejectedProduct")) 
       { 
        cmd.CommandType = CommandType.Text; 
        cmd.Connection = con; 
        con.Open(); 
        DropDownList1.DataSource = cmd.ExecuteReader(); 
        DropDownList1.DataTextField = "Name"; 
        DropDownList1.DataValueField = "ID"; 
        DropDownList1.DataBind(); 
        con.Close(); 
       } 
      } 
      DropDownList1.Items.Insert(0, new ListItem("Select Item for adding", "0"));} 

のような別のドロップダウンコードを持って

for (int i = 0; i < 5; i++) 
      { 
       DropDownList drop = new DropDownList(); 
       drop.ID = "dropdownlist" + i; 
       form1.Controls.Add(drop); 
       form1.Controls.Add(new LiteralControl("<br />")); 
      } 

aspx.csからでしょうか?

+0

ダイナミックコントロールを使用すると、コントロールが各ポストバックで破棄され、再作成する必要があるasp.netの悪い考えです。彼らはあなたがそれらに入れた価値を保持しません。そうすることは悪い考えです。 –

+0

動的に作成されるコントロールにはいくつかのステップが必要です。あなたは多くのステップを欠いています。 [this](http://stackoverflow.com/a/18155057/296861)答えを見てください。特定の質問がある場合は、戻ってもう一度お尋ねください。 – Win

答えて

0

Mysterio11 & Winのコメントをチェックしてください。

データを入力する基本的な考え方は次のとおりです。最も重要なのは、最適化されていないことです。ループでコマンドと接続を作成するのは悪い考えです。

 if (!this.IsPostBack) 
     { 
      DropDownList DropDownList1; 
      for (int i = 0; i < 5; i++) 
      { 
       DropDownList1 = (DropDownList)FindControl("dropdownlist" + i); 
       string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; 
       using (SqlConnection con = new SqlConnection(constr)) 
       { 
        using (SqlCommand cmd = new SqlCommand("SELECT ID, Name FROM RejectedProduct")) 
        { 
         cmd.CommandType = CommandType.Text; 
         cmd.Connection = con; 
         con.Open(); 
         DropDownList1.DataSource = cmd.ExecuteReader(); 
         DropDownList1.DataTextField = "Name"; 
         DropDownList1.DataValueField = "ID"; 
         DropDownList1.DataBind(); 
         con.Close(); 
        } 
       } 
       DropDownList1.Items.Insert(0, new ListItem("Select Item for adding", "0")); 
      } 
     } 
+0

例外をスローする 例外の詳細:System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。 –

+0

@joyoares遅れて本当に残念です。私がテストに使用したコードは、この[リンク](https://drive.google.com/open?id=0B_czp2rbfZFjbURncGljZk53X2s)とその正常動作に添付されています。それを通過してください。 – lal

関連する問題