protected void GridEmp_RowCommand(object sender, GridViewCommandEventArgs e)
{
//Task 2 for Add button
if(e.CommandName == "add")
{
//code to display footer row
GridEmp.FooterRow.Visible = true;
}
else if(e.CommandName=="save")
{
//code to insert a record
TextBox txtEno = (TextBox)GridEmp.FooterRow.FindControl("txtEmpNo");
TextBox txtEname =(TextBox)GridEmp.FooterRow.FindControl("txtEmpName");
TextBox txtEsal = (TextBox)GridEmp.FooterRow.FindControl("txtEmpSal");
int eNo = int.Parse(txtEno.Text);
string eName = txtEname.Text;
double eSal = double.Parse(txtEsal.Text);
cmd = new SqlCommand("insert into Emp values(@eNo,@eName,@eSal)");
cmd.Parameters.AddWithValue("@eNo", eNo);
cmd.Parameters.AddWithValue("@eName", eName);
cmd.Parameters.AddWithValue("@eNo", eSal);
conn.Open();
int i = cmd.ExecuteNonQuery();
conn.Close();
if(i==1)
{
lblMsg.Text = "Record in inserted";
}
else
{
lblMsg.Text = "Not inserted";
}
BindEmp();
}
我没有在代码中看到任何错误,但即使我使用Parse将字符串转换为int,我仍然会收到格式异常。有人可以帮我确切地说我错了!
答案 0 :(得分:0)
当您尝试将无法解析的字符串转换为int
值时,会引发您看到的异常。既然你还没有提到txtEno.Text
的价值,我就不知道具体是什么。无论如何,它都无法转换为int
。
所以你的错误在于你没有考虑输入无效值的用户。
您应修改代码以使用TryParse
代替。这将允许您处理错误输入的无效数据,而不会导致程序崩溃:
TextBox txtEno = (TextBox)GridEmp.FooterRow.FindControl("txtEmpNo");
int eNo;
bool eNoIsValid = int.TryParse(txtEno.Text, out eNo);
if (!eNoIsValid)
{
// Handle invalid input.
}