从一个下拉列表中选择类别以在另一个下拉列表中显示子类别

时间:2012-09-13 21:26:55

标签: c# asp.net drop-down-menu code-behind

我试图让下拉列表通过C#控制另一个。 我的计划是,第一个DropDownList显示“大小”,“性别”,“模型”等类别,当您选择其中一个类别时,新的DropDownList将出现以前选择的类别的新子类别。

例如,如果我选择“大小”,则会出现一个新的DropDownList shal,并可以选择多种尺寸。

我得到一个错误,同时测试听起来像这样:确保您的方法参数格式正确。

以下是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ContactTableAdapters;

public partial class Test : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void ddlTwo_SelectedIndexChanged(object sender, EventArgs e)
    {
        ddlTwo.Items.Clear();
        if (ddlThree.SelectedValue != "0")
        {
            Contact.CategoriesDataTable table;
            ddlTwo.AppendDataBoundItems = true;
            ddlTwo.Items.Add(new ListItem("Choose", "0"));
            CategoriesTableAdapter subM = new CategoriesTableAdapter();
            int CategoryID = Convert.ToInt32(ddlThree.SelectedValue); //This is where I get the error
            table = subM.GetCategoryByCategoryID(CategoryID);
            foreach (Contact.CategoriesRow row in table)
            {


                string text = row.Category;
                string value = row.CategoryID.ToString();
                ddlTwo.Items.Add(new ListItem(text, value));

            }
        }
    }
}

有人可以告诉我,我可能做错了吗?

2 个答案:

答案 0 :(得分:1)

看起来你正在返回一个无法转换为整数的值。

你可以做的是创建一个可以引用措辞价值的枚举:

int CategoryID = Enum.GetValues(typeof(Category), (ddlThree.SelectedValue));

你的Enum看起来像这样:

enum Category
{
Size= 1,
Gender = 2,
Value = 3
}

答案 1 :(得分:0)

如果您实际上正在响应ddlTwo上的事件,请使用此:

protected void ddlTwo_SelectedIndexChanged(object sender, EventArgs e)
    {
        ddlThree.Items.Clear();
        if (ddlTwo.SelectedValue != "0")
        {
            Contact.CategoriesDataTable table;
            ddlThree.AppendDataBoundItems = true;
            ddlThree.Items.Add(new ListItem("Choose", "0"));
            CategoriesTableAdapter subM = new CategoriesTableAdapter();
            int CategoryID = Convert.ToInt32(ddlTwo.SelectedValue); //This is where I get the error
            table = subM.GetCategoryByCategoryID(CategoryID);
            foreach (Contact.CategoriesRow row in table)
            {


                string text = row.Category;
                string value = row.CategoryID.ToString();
                ddlThree.Items.Add(new ListItem(text, value));

            }
        }
    }