【发布时间】:2014-04-14 03:38:45
【问题描述】:
我正在试用sample example for SOAP demo in C#。 与视频中的不同,我在 aspx 文件中尝试相同的东西,而不是 windows 窗体。
(PS:不需要看视频)
总而言之,我正在尝试将 Currency 类型的项目列表(通过网络引用导入)在 aspx 页面中的 DropDownList 中。
我创建了一个 aspx 文件并放置了一个 WebControls.DropDownList 和一个 button。
ComboBoxFrom是DropDownList在aspx页面中的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 类型的对象。
【问题讨论】: