我有一个从数据库中提取类别的下拉列表。当用户选择一个类别时,转发器只显示那些记录,这是正确的功能。我的问题是如何使第一个选项(--按类别过滤--),它不是数据库中的类别,只需返回所有记录。这是页面背后的代码:
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);
}
}
protected void ListVideos(string inCategoryID)
{
videoList = new List<video>();
video v = new video();
videoList.AddRange(v.ListingByCategory(inCategoryID));
repeater.DataSource = videoList;
repeater.DataBind();
}
protected void ddlCategories_SelectedIndexChanged(object sender, EventArgs e)
{
ListVideos(ddlCategories.SelectedValue);
}
这是清单的类文件:
#region ListingByCategory()
// ****************************
public video[] ListingByCategory(string inCategoryID)
{
SqlConnection dbconn = BaseClass.ReturnDbConn();
List<video> listArray = new List<video>();
try
{
dbconn.Open();
this.SB.Remove(0, this.SB.Length);
this.SB.Append("SELECT DISTINCT v.*, c.display_name ");
this.SB.Append("FROM video v ");
this.SB.Append("INNER JOIN contributor c ON c.contributor_id = v.contributor_id ");
this.SB.Append("INNER JOIN video_category vc ON vc.video_id = v.video_id ");
if (!String.IsNullOrEmpty(inCategoryID))
{
this.SB.Append("WHERE vc.category_id = " + SQLUtility.SQLPrep(inCategoryID) + " ");
}
this.SB.Append("ORDER BY v.video_id ASC");
this.SQL = this.SB.ToString();
这只是其中的一部分,我知道不是所有的花括号都在那里,但我不想让整个文件过载。
如果我需要提供额外的代码,请告诉我。这是在 C# 中。我不认为这是一个困难的解决方案,只是一个我现在正在逃避的解决方案。提前致谢。