2012-02-19 19 views
0

私はデータベースからデータを取得するウェブ開発をしていますが、ウェブ開発は新しいです。asp.net C#コードで新しいドロップダウンリストを挿入

グリッドビュー、ドロップダウンリストなどを使用してデータを表示しますが、ウェブサイトのユーザーが作業を行うために必要なドロップダウンリストの数を設定するページがあります。

具体的には、ユーザーは製品と各製品の数量を選択しますが、ユーザーが必要とする製品の数はわかりません。ユーザーがx個の製品を入力したい場合は、x個の製品とその数量を選択できるように、x個のdrowdownリストを(異なる行に)作成する必要があります。

ユーザーAはトマト2匹、ジャガイモ3匹、スイカ5匹を選びたいと考えています。 彼は、テキストボックスに(製品の数の)3を入力し、その後、3行は2つのドロップダウンリストそれぞれに表示され、ユーザが

トマト2個の

ジャガイモ3個の

スイカ5

を選択します

新しい行を追加する - >>>これは私が作成したい別のものです

アイデア??

答えて

1

コードビハインドでは、具体的にはPage_Loadイベント中に、必要なドロップダウンの数を決定し、その場で作成することをお勧めします。そこGoogle検索から生じるかなりの数の例がありますが、簡単な例は次のようになります。

int countNeeded = 15; //or whatever your code tells you is the right amount 

for (int x = 0; x < 15; x++) 
{ 
    mainContent.Controls.Add(new DropDownList()); 
    //mainContent would be a control on the page that you want to host your controls. 
} 
+0

メインコンテンツはどのようなコントロールですか? – Dchris

+0

mainContentは、Panelコントロール、または実際には子を受け入れるコントロールです。テーブルも同様に動作し、セルにアクセスするだけで済みます。 –

0

あなたはコードビハインドに必要なコントロールを作成することができます。そうする際に考慮すべき事柄:あなたは、各

  • あなたは彼らが(ポストバックを含む)表示させたい場合に、各ページの負荷のコントロールを再作成Page_InitPage_Loadイベント
  • にコントロールを作成
  • を置くことができますテーブルの個別の行にあるドロップダウンあなたがそれらを別々の行に表示するか、LiteralControl

、それらの間のいくつかのサンプルコードに置くことができる場合:

protected void Page_Load(object sender, EventArgs e) 
{ 
    //read how many DropDownList controls are needed 
    int ddlCount = txtDropDownList.Text; 

    for (int i = 0; i < ddlCount; ++i) 
    { 
     if (i > 0) 
     { 
      //add a page break between previous DropDownList and the current one 
      this.Controls.Add(LiteralControl("<br />")); 
     } 

     //add a DropDownList with ID productDdl and an appropriate number 
     this.Controls.pageContent.Add(new DropDownList() { ID = String.Format("productDdl{0}", i) }); 
    } 
} 

私はこのコードをテストしていないので、問題が見つかった場合は教えてください。私はそれらを修正しようとします。

関連する問題