我有一个下拉列表按类别过滤记录,但我需要“ - 按类别过滤 - ”选项作为“查看全部”,从而返回所有记录。
这是在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);
}
}
答案 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个类别或多个类别的任意组合的任何排列。
(根据您提供的信息,这就是我现在可以建议的所有内容。)