2017-08-06 60 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. 
}