2017-08-06 59 views
-1
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。有人能帮助我,我确实犯了错误!ASP.Net格式异常

enter image description here

+3

那么'txtEno.Text'的价值是什么?你可能会发现它不是可以被解析为int的东西。 – itsme86

回答

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. 
}