C# 如何使用SQL在列表中“全部显示”

C# 如何使用SQL在列表中“全部显示”,c#,sql,C#,Sql,我有一个下拉列表,它从数据库中提取类别。当用户选择一个类别时,中继器只显示那些记录,这是正确的功能。我的问题是,如何使第一个选项(按类别筛选)简单地返回所有记录,而不是数据库中的类别。以下是页面的隐藏代码: protected void PopulateCategories() { category myCategory = new category(); category[] myCategoryList = myCategory.Listing("title ASC");

我有一个下拉列表,它从数据库中提取类别。当用户选择一个类别时,中继器只显示那些记录,这是正确的功能。我的问题是,如何使第一个选项(按类别筛选)简单地返回所有记录,而不是数据库中的类别。以下是页面的隐藏代码:

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语言。我不认为这是一个很难的解决方案,只是一个我现在无法解决的问题。提前谢谢

您应该使用参数化查询,而不是字符串连接来提供值,即使您自己对它们进行了清理。这是一个庞大的项目,所有的工作都在一个黑客和斜杠类型的格式。什么是不工作与您的如果!String.isnulloremptyCategoryId测试?我认为这会很好。我也这么认为,但我认为它得到的“inCategoryID”是字符串-按类别筛选-并且由于没有与该类别相关的记录,因此它什么也没有显示。您只需添加一个值:new ListItem Filter by category-,string.Empty。