帮助:无法将对象下拉列表转换为IConvertible

时间:2009-04-11 22:41:26

标签: casting

我在从FIndControl函数获取下拉列表的值时遇到问题。

以下是我尝试使用的代码:

currentCategoryID = Convert.ToInt32(((DropDownList)r.FindControl("DDLCategories")));

数据库中currentCategoryID的值是“int”

当我执行上面的代码时,我收到以下错误消息:

无法将“System.Web.UI.WebControls.DropDownList”类型的对象强制转换为“System.IConvertible”。

使用相同的代码我必须使用此代码退出文本框值,一切正常

currentAddress = ((TextBox)r.FindControl("txtAddress")).Text;

有人可以指出我正确的方向如何正确编写此代码

2 个答案:

答案 0 :(得分:3)

您正在尝试将DropDownList本身转换为Int32而不是其值。您应该进一步深入控件以在转换之前检索该值。例如,

currentCategoryID = Convert.ToInt32(((DropDownList)r.FindControl("DDLCategories")).SelectedItem.Value);

答案 1 :(得分:1)

您的第一个代码段是尝试将 DropDownList控件本身转换为int。您需要做的是提取所选值或所选项目或其他任何内容,具体取决于您使用的UI框架:

object selectedId = ((DropDownList)(r.FindControl("...")).SelectedValue;
int currentCategoryId = Convert.ToInt32(selectedId);