输入字符串的格式不正确,请下拉列表“选定值”
本文关键字:选定值 下拉列表 字符串 格式 不正确 输入 | 更新日期: 2023-09-27 18:30:01
我有一个带有按钮的下拉列表,当单击按钮时,会为函数调用一个单独的类,以运行在表中插入行的SQL存储过程。但是,当单击该按钮时,我会得到一个FormatException错误。
protected void btnAssignWork_Click(object sender, EventArgs e)
{
RequestBO requestBO = new RequestBO();
int oppid = Convert.ToInt32(Request.QueryString["Opportunity"]);
int EmpId = Convert.ToInt32(ddlRadWorkers.SelectedValue);
requestBO.AssignOpportunity(EmpId, oppid);
}
private void FillRadWorkerDDL()
{
RequestBO requestBO = new RequestBO();
DataSet dsRADWorkers = null;
dsRADWorkers = requestBO.GetRadWorkers();
ddlRadWorkers.DataSource = dsRADWorkers;
ddlRadWorkers.DataTextField = "EmpName";
ddlRadWorkers.DataValueField = "EmployeeID";
ddlRadWorkers.DataBind();
ddlRadWorkers.Items.Insert(0, "Select Employee");
}
页面加载时调用FillRadWorker,RequestBO.GetRadWorkers返回EmployeeID和EmpName两列。单击该按钮时,Employee ID和Opportunity ID应被提供给存储过程,但FormatException会停止此操作。
感谢任何指导
更新:这是一个返回后的问题,抱歉,由于ASP.NET没有接收DDL 的新值,所以值不正确。
尝试查看/打印Request.QueryString["Opportunity"]
和ddlRadWorkers.SelectedValue
的值。您没有告诉它在哪一行抛出异常,如果它出现在Convert.ToInt32(ddlRadWorkers.SelectedValue);
,那么可能您没有正确设置ddlRadWorkers
的数据源。设置如下:
private void FillRadWorkerDDL()
{
...
ddlRadWorkers.DataSource = dsRADWorkers.Tables[0];
...
}
与其调用Convert.ToInt32(字符串str),不如执行以下操作:
if (!string.IsNullOrEmpty(str))
{
Convert.ToInt32(str);
}
或者你可以使用int.TryParse。这个方法返回布尔值而不是抛出异常,并在输出参数中返回整数值。使用TryParse的好处是,如果字符串中有数字以外的其他字符
使用
Convert.ToInt32(Request.QueryString["Opportunity"].ToString()) and
int EmpId = Convert.ToInt32(ddlRadWorkers.SelectedValue.ToString());
Yes问题可能是由于postback引起的,我也遇到了同样的问题,并为类似的问题滞留了很多小时,但当我将ispostback放入包含FillRadWorkerDLL()函数声明的页面加载函数中时,问题就解决了。试着这样做。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
FillRadWorkerDLL();
}
}
FillRadWorkerDDL(){ //your code here }
建议:1) 尝试在FillRadWorkerDLL();
线上使用调试模式(ctrl+F10)并尝试解决它。