0

データベースからカテゴリを取得するドロップダウン リストがあります。ユーザーがカテゴリを選択すると、リピーターはそれらのレコードのみを表示しますが、これは正しい機能です。私の質問は、データベース内のカテゴリではない最初のオプション (--カテゴリによるフィルタ-) を作成する方法です。単純にすべてのレコードを返します。ページのコードビハインドは次のとおりです。

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#にあります。これは難しい解決策ではないと思いますが、現在私を逃れているだけです。前もって感謝します。

4

0 に答える 0