将数据绑定到DropDownList错误

时间:2014-04-13 13:53:42

标签: c# asp.net soap

我正在尝试sample example for SOAP demo in C#。 与视频不同,我在aspx文件中尝试相同的东西而不是Windows窗体。

(PS:无需观看视频)

总而言之,我正在尝试将Currency类型的项目列表(通过Web引用导入)放在aspx页面的DropDownList中。

我创建了一个aspx文件并添加了WebControls.DropDownListbutton

ComboBoxFrom是aspx页面中DropDownList的ID名称。

以下是我在Page_Load方法上的代码。

protected void Page_Load(object sender, EventArgs e)
    {
        List<Currency> list = Enum.GetValues(typeof(Currency)).Cast<Currency>().ToList();
        ComboBoxFrom.DataSource = list;
        ComboBoxFrom.DataBind();
        ComboBoxFrom.Items.FindByValue(Convert.ToString(Currency.USD)).Selected = true;

    }

在我的按钮点击方法中,我写的是

Currency curFrom = (Currency)ComboBoxFrom.SelectedItem;

在这里,我收到错误无法将类型'System.Web.UI.WebControls.ListItem'转换为'SecureBillingService.net.webservicex.www.Currency'

我理解可能因为ComboBoxFrom中的数据可能在运行时被绑定,所以可能就是这样。 如何克服此错误?

我试过这样做

ComboBoxFrom.ItemType = Currency;

认为我会强制编译器将ComboBoxFrom中的项的数据类型假设为Currency的类型,但我得到的错误是Currency是一种类型但是像变量。

修改

Currency类的代码不可用。我得到的这个参考就像视频中的家伙一样。在对象浏览器中,我看到它被声明为public enum Currency,它的基类型是Enum。顺便说一下,我认为这不重要。即使您使用成员变量创建自定义类,它也不起作用。我终于尝试通过创建一个新词典来解决这个问题,该词典的密钥为String,值为Currency。由于ComboBoxFrom.SelectedValue给出String,我可以使用它。

顺便问一下原来的问题仍然存在。这里的问题是编译器无法确定我在DropDownList中传递的列表不是String而是Currency类型。 (也许它甚至不可能,但是智能感知并没有将其显示为错误)所以如果我要做ComboBoxFrom.SelectedItem那么我希望得到一个Currency类型的对象。

1 个答案:

答案 0 :(得分:0)

你在按钮中所做的演员是不正确的,试试这个:

Currency curFrom = (Currency)Enum.Parse(typeof(Currency), ComboBoxFrom.SelectedValue);