动态创建多个ListBoxes

时间:2010-12-13 18:43:39

标签: c# asp.net listbox

我在SQL Server中有一个表,它提供了产品列表(PRODUCT)和产品类别(CAT)。现在我将所有产品放在同一个ListBox中:

foreach (DataRow row in ds.Tables["ProductsTbl"].Rows)
{
    string str = string.Format("{0}", row["PRODUCT"]);
    ListBox1.Items.Add(new ListItem(str));
}

但我需要创建与类别一样多的列表框,并根据类别分发这些产品。可能会添加或删除类别,因此我需要动态创建它们。

因此,假设该表在类别1中有5个产品,在类别2中有4个产品,在类别3中有7个产品,我需要创建3个列表框。第一个有5个项目,第二个有4个项目,最后一个有7个项目。有任何想法吗 ? THX。

2 个答案:

答案 0 :(得分:1)

  1. ProductsTbl
  2. 订购categoryId数据集
  3. 每次遇到新的categoryId
  4. 时,都会添加新的列表框

    这样的事情:

    var catId = ds.Tables["ProductsTbl"].Rows[0].categoryId;
    var listBox = ListBox1;
    foreach (DataRow row in ds.Tables["ProductsTbl"].Rows)
    {
        if(catId != row.categoryId)
        {
            catId = row.categoryId;
            listBox = new ListBox();
            Panel1.Controls.Add(listBox);
        } 
        string str = string.Format("{0}", row["PRODUCT"]);
        listBox.Items.Add(new ListItem(str));
    }
    

答案 1 :(得分:0)

您甚至可以创建一个控件,使您能够调整外观,然后创建它的新实例,就像Joshia的代码一样。

http://knol.google.com/k/creating-custom-controls-with-c-net#

以上是自定义控件的示例