【问题标题】:Binding data to a DropDownList Error将数据绑定到 DropDownList 错误
【发布时间】:2014-04-14 03:38:45
【问题描述】:

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

(PS:不需要看视频)

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

我创建了一个 aspx 文件并放置了一个 WebControls.DropDownList 和一个 button

ComboBoxFromDropDownList在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 类型的对象。

【问题讨论】:

    标签: c# asp.net soap


    【解决方案1】:

    您在按钮中进行的投射不正确,试试这个:

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

    【讨论】:

      猜你喜欢
      • 2018-05-15
      • 1970-01-01
      • 1970-01-01
      • 2010-09-26
      • 2012-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多