2013-02-26 4 views
0

gridview에 int 값을 추가하려고합니다. Heres는 내 C# 코드 :입력 문자열의 형식이 올바르지 않습니다.

foreach (GridViewRow r in GridView1.Rows) 
{ 
     int I = (Convert.ToInt32(r.Cells[5].Text) 
       + Convert.ToInt32(r.Cells[6].Text) 
       + Convert.ToInt32(r.Cells[7].Text) 
       + Convert.ToInt32(r.Cells[8].Text) 
       + Convert.ToInt32(r.Cells[9].Text)); 
     r.Cells[10].Text = Convert.ToString(I); 
} 

예외 : 그것은 잘 이전 일하는

"입력 문자열의 형식이 잘못되었습니다." 데이터베이스를 연결 한 다른 시스템으로 바 꾸었습니다. 여기에 약간의 변경을했습니다. & 그리고 그 부분이 작동하지 않습니다. gridview 셀은 페이지가로드 될 때 이미 값을 가지고 있습니다. 나는 그 값을 더하고 (합계), 버튼 클릭만으로 같은 gridview의 다른 셀에 추가를 표시하고있다.

도움을 주시면 감사하겠습니다.

+0

변환하려는 값의 종류는 무엇입니까? 너 한테 모범이 있니? – Derek

+1

해당 라인을 디버깅 했습니까? 모든 셀 값은 int로 변환 가능합니까? –

+0

각 루프마다 중단 점을 추가하고 루프를 디버깅하면 여기에 질문을 입력하는 것보다 훨씬 적은 시간이 걸렸을 것이며 응답도 얻었을 것입니다. :) –

답변

5

Convert.ToInt32 호출에 전달 된 값을 확인하십시오. 하나 이상의 호출이 int으로 변환 될 수 없습니다.

데이터베이스 관리 프로그램에서 소스를 직접 보거나 코드를 단계별로 실행하여 행의 컬럼과 값 등을 볼 수 있습니다. 그러나 수정은 동일하게 유지되며 두 개 중 하나 또는 둘을 모두 사용합니다 양식 : 데이터를 수정하거나 신경 쓰지 않도록 코드를 수정하십시오 (허용되는 경우).

당신은 후자를 위해 int.TryParse에 관심이있을 수 있습니다.

0

반복 할 때 GridViewRow의 RowType을 확인하십시오. HeaderRow에서 값을 구문 분석하려고 할 수 있습니다. DataRow에만 관심이 있다고 생각합니다.

또한 셀의 인덱스를 사용하여 gridview에서 값을 가져 오지 않는 것이 좋습니다. Gridview의 레이아웃을 변경하면 계산이 실패합니다.

+0

rt! m 데이터 행과 복용 널 (null)에만 관심이 ... – adityawho

+0

내가 데이터 행에 대한 행 유형을 설정 ... foreach는() { 경우 (r.RowType == DataControlRowType.DataRow) {// 내 코드 } } 아직도 작동하지 않습니다. 나는 정말로 여기 몇 가지 도움을 사용합니다 ... – adityawho

0

변환을 통해 널값을 의미있는 값으로 변환 할 수 없습니다. 가장 좋은 옵션은 먼저 null을 확인한 다음 결과에 Convert가 결과를 보내고있는 곳의 값을 0 (또는 무엇이든)으로 지정하는 것입니다.

2

이 시도 :

 foreach (GridViewRow r in GridView1.Rows) 
     { 
      int val1 = 0; 
      int val2 = 0; 
      int val3 = 0; 
      int val4 = 0; 
      int val5 = 0; 

      int.TryParse(r.Cells[5].Text, out val1); 
      int.TryParse(r.Cells[6].Text, out val1); 
      int.TryParse(r.Cells[7].Text, out val1); 
      int.TryParse(r.Cells[8].Text, out val1); 
      int.TryParse(r.Cells[9].Text, out val1); 

      int I = (val1 + val2 + val3 + val4 + val5); 

      r.Cells[10].Text = I.ToString(); 
     } 

당신이해야 항상 테스트 값 가능한 다른 데이터 형식으로 변환하는 시도하기 전에.

+0

Thnx ..이 작품은 .. 문제가되었습니다. – adityawho

+0

실제로 데이터를 보지 않고서는 멋진 플레이를 원하지 않는 이상한 데이터가 있었을 것입니다. –

+0

데이터가 (데이터베이스에서 float으로 데이터 유형으로) 정수 값을 가졌습니다 ... thnx thoh – adityawho

관련 문제