我正在尝试sample example for SOAP demo in C#。 与视频不同,我在aspx文件中尝试相同的东西而不是Windows窗体。
(PS:无需观看视频)
总而言之,我正在尝试将Currency
类型的项目列表(通过Web引用导入)放在aspx页面的DropDownList
中。
我创建了一个aspx文件并添加了WebControls.DropDownList
和button
。
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
类型的对象。
答案 0 :(得分:0)
你在按钮中所做的演员是不正确的,试试这个:
Currency curFrom = (Currency)Enum.Parse(typeof(Currency), ComboBoxFrom.SelectedValue);