2

我尝试从下拉列表中的选定项目中获取类别 ID。我用 foreach 循环(使用列表)填充下拉列表。

这是我用来获取 ID 的代码:

    protected void dropDownCategories_SelectedIndexChanged(object sender, EventArgs e)
    {
        DropDownList ddl = (DropDownList)sender;
        Category category = (Category)ddl.Items[ddl.SelectedIndex];
        int CatID = category.CategoryID;
    }

上面的代码不起作用,并给我这个错误:

Error   2   Cannot convert type 'System.Web.UI.WebControls.ListItem' to 'XXXXXX.classes.Category'

但是当我对列表框使用类似的代码时,下面的代码就可以了!

    protected void listBoxCategories_SelectedIndexChanged(object sender, EventArgs e)
    {
        ListBox lb = (ListBox)sender;
        Category category = (Category)lb.Items[lb.SelectedIndex];
        int CatID = category.CategoryID;
    }

为什么这段代码适用于列表框而不适用于下拉列表?

谢谢!

4

1 回答 1

1

System.Web.UI.WebControls.DropDownList有 aListItemCollection作为它的 Items 属性,它是一个ListItem具有 text 和 value 属性的对象的列表。

尽管

System.Windows.Forms.ListBox有一个ObjectCollection作为它的 Items 属性,它基本上是一个对象列表

因此,当您将项目添加到下拉列表时,您正在添加一个无法转换为您的类型的列表项目,我需要查看您的下拉列表填充代码以了解您在每个项目中存储的内容。

但是,当您将项目添加到列表框时,您正在添加一个对象,因此如果在每个项目中添加您的类的实例,那么它可以通过强制转换转换回来。

于 2013-07-13T16:42:15.763 回答