我在从FIndControl函数获取下拉列表的值时遇到问题。
以下是我尝试使用的代码:
currentCategoryID = Convert.ToInt32(((DropDownList)r.FindControl("DDLCategories")));
数据库中currentCategoryID的值是“int”
当我执行上面的代码时,我收到以下错误消息:
无法将“System.Web.UI.WebControls.DropDownList”类型的对象强制转换为“System.IConvertible”。
使用相同的代码我必须使用此代码退出文本框值,一切正常
currentAddress = ((TextBox)r.FindControl("txtAddress")).Text;
有人可以指出我正确的方向如何正确编写此代码
答案 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);