2012-10-16 3 views
0

gridview가 있고 gridview 내부의 내용 데이터가 저장 프로 시저에서 호출되지만 gridview 행 내용을 업데이트 할 때마다 예외가 나타납니다. 업데이트 코드는 다음과 같습니다 :Gridview를 업데이트 할 때 예외를 방지하는 방법은 무엇입니까?

protected void Grid_Updating(object sender, GridViewUpdateEventArgs e) 
    { 
     SqlCommand cmd = DataProvider.GenerateCommand("Update_HowzeEducation_SP", CommandType.StoredProcedure); 
     cmd.Connection.Open(); 

     cmd.Parameters.Add("@FieldName", SqlDbType.NVarChar).Value = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text; 
     cmd.Parameters.Add("@DegreeId", SqlDbType.Int).Value = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text; 
     cmd.Parameters.Add("@SchoolName", SqlDbType.NVarChar).Value = ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text; 
     cmd.Parameters.Add("@StudyCityDescribtion", SqlDbType.NVarChar).Value = ((TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0]).Text; 
     cmd.Parameters.Add("@Average", SqlDbType.Decimal).Value = decimal.Parse(((TextBox)GridView1.Rows[e.RowIndex].Cells[5].Controls[0]).Text, CultureInfo.InvariantCulture); 
     cmd.Parameters.Add("@FinishLevelDate", SqlDbType.Date).Value = Convert.ToDateTime(((TextBox)GridView1.Rows[e.RowIndex].Cells[6].Controls[0]).Text.Trim()); 
     cmd.Parameters.Add("@ThesisTitle", SqlDbType.NVarChar).Value = ((TextBox)GridView1.Rows[e.RowIndex].Cells[7].Controls[0]).Text; 
     cmd.Parameters.Add("@Describtion", SqlDbType.NVarChar).Value = ((TextBox)GridView1.Rows[e.RowIndex].Cells[8].Controls[0]).Text; 
     cmd.Parameters.Add("@HowzeEducationId", SqlDbType.Int).Value = GlobalVariables.HowzeEducationId; 

     cmd.ExecuteNonQuery(); 

    } 

그리고 예외입니다 : 는 INT32에 문자열에서 매개 변수 값을 변환하지 못했습니다. 이 메시지는 코드의 마지막 줄에 표시됩니다.

나는 도움이 될만한 것에 대해 감사 할 것입니다.

답변

0

오류는 다음과 같이 말합니다. 문자열을 int에 넣으려고합니다.

이 줄을 참조하십시오 :

cmd.Parameters.AddWithValue("@DegreeId",Convert.ToInt32(((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text); 

를 다음과 같이 당신이 DataSourceID를 사용하여 데이터를 바인딩 한 경우

cmd.Parameters.Add("@DegreeId", SqlDbType.Int).Value = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text; 

수행 될 수 있습니다를의 NewValues 컬렉션 와서 편리

cmd.Parameters.AddWithValue("@DegreeId",e.NewValues["DegreeId"]); 
관련 문제