如何在下拉列表中获取所有记录?

时间:2012-09-24 16:41:07

标签: c# .net drop-down-menu

我有一个下拉列表按类别过滤记录,但我需要“ - 按类别过滤 - ”选项作为“查看全部”,从而返回所有记录。

这是在C#.NET中。我不认为它太难了,但它现在只是让我感到难过。

以下是该方法的代码隐藏:

protected void PopulateCategories()
{
    category myCategory = new category();
    category[] myCategoryList = myCategory.Listing("title ASC");

    ddlCategories.Items.Add("-- Filter by category --");

    foreach (category category in myCategoryList)
    {
        ListItem item = new ListItem(category.title, category.category_id);
        ddlCategories.Items.Add(item);            
    }
}

2 个答案:

答案 0 :(得分:2)

根据您的数据源以及它对category.category_id值的反应,您应该将值作为“ - 按类别过滤 - ”条目的一部分...

ddlCategories.Items.Add(New ListItem("-- Filter by category --", "-1"));

然后当您使用ddlCategories.SelectedValue(或者您使用它)时,请确保如果值为-1,则返回所有内容

答案 1 :(得分:0)

为了使您的表单更直观,您可能需要填充下拉列表,如下所示:

ddlCategories.Items.Add(new ListItem("- View all categories -", "-1"));

foreach (category category in myCategoryList)
{
    ListItem item = new ListItem("View category: " + category.title, category.category_id);
    ddlCategories.Items.Add(item);            
}

然后,要回答您的问题,请创建2种数据访问方法:#1用于检索所有行,#2用于检索按所选类别过滤的行。

public DataTable GetData(int categoryId)
{
  if(categoryId <= 0)
  {
    // #1
    return CatProvider.FindAll(); // Ex. SELECT * FROM table_cats;
  }
  else
  {
    // #2
    return CatProvider.FindByCategoryId(categoryId); // Ex. SELECT * from table_cats where id_category = @id_category;
  }
}

但是,我会考虑使用复选框(每个类别1个),因此用户可以选择所有类别,只有1个类别或多个类别的任意组合的任何排列。

(根据您提供的信息,这就是我现在可以建议的所有内容。)