2017-02-20 2 views
0

저는 Ms. Excel에서와 같이 datagridview에서 수학 연산을 수행하는 데 문제가 있습니다. 더 구체적으로 행 닫기 [2]와 행 [3]을 빼기 원합니다. 결과 열은 열에 저장됩니다.C#을 사용하여 datagridview에서 수학 연산을 수행하는 방법?

// 이제 내 코드를 보여

 private void button3_Click(object sender, EventArgs e) 
     { 
      conn = new SqlConnection("Server=TSANAARSYANI;Data Source= TSANAARSYANI; Database = dbSaham;Integrated Security = SSPI"); 
      conn.Open(); 
      ds = new DataSet(); 
      da = new SqlDataAdapter("Select * From hargaRSI", conn); 
      da.Fill(ds,"hargaRSI"); 
      dataGridView2.ReadOnly = true; 
      dataGridView2.AllowUserToAddRows = false; 
      dataGridView2.AllowUserToDeleteRows = false; 
      dataGridView2.SelectionMode = DataGridViewSelectionMode.FullRowSelect; 
      dataGridView2.DataSource = ds.Tables["hargaRSI"]; 
      object value1 = dataGridView2[2, 2].Value; 
      object value2 = dataGridView2[3, 2].Value; 
      float val1, val2; 
      if(float.TryParse(value1.ToString(),out val1)&&float.TryParse(value2.ToString(),out val2)) 
      { 
       dataGridView2[3, 2].Value = val2 - val1; 
      } 
      else 
      { 
       MessageBox.Show("cannot substract, invalid inputs."); 
      } 
      dataGridView2.Visible = true; 
     } 

참고합니다 해당 테이블의 인덱스 번호 1

This is data image

에서 시작 가정 해 봅시다 : 나는 SQL 서버를 사용하고있는 DataGridView에 데이터를하지 검색 데이터 테이블

+0

귀하의 데이터 테이블 내의 계산 및 그리드와 바인딩? –

+0

[how-to-ask] (http://stackoverflow.com/help/how-to-ask)를 참조하십시오. 데이터에 링크하지 마시고 여기에 게시하십시오. – swe

+0

열 닫기에서 행 [2]와 행 [1] 사이를 빼고 싶습니다 (예 : 900.00-900.00). 결과는 제가 위로 열에 넣었습니다 – phoenix95

답변

0

행을 순환합니다. 원하는대로 수학 연산을 할 수 있습니다. 확인이 : 당신은 뺄 원하는 값, 당신은 가까운 열에서 날짜 열이나 날짜 열에서 가까운 열을 빼기하고 당신이 원하는 이유도 그리드 내에서 계산, 왜 사람들을 수행하지 않는 것이 원 뭐죠

private void setResultOnDataGridView() 
{ 
    //dont calculate anything if source is null 
    if (dataGridView1.DataSource == null) return; 

    //get row numbers count 
    var rowLen = dataGridView1.Rows.Count; 

    //loop through rows of your GridView 
    foreach (DataGridViewRow dr in dataGridView1.Rows) 
    { 
     //at last row. done 
     if (dr.Index + 1 == rowLen) break; 

     //get next row. 
     var nextRow = dataGridView1.Rows[dr.Index + 1]; 

     string col1 = dr.Cells["Close"].Value.ToString(); 
     string col2 = nextRow.Cells["Close"].Value.ToString(); 

     float val1=0, val2=0; 
     if (float.TryParse(col1, out val1) && float.TryParse(col2, out val2)) 
     { 
      dr.Cells["Up"].Value = val2 - val1; 
     } 
    } 

} 
+0

정말 작동, 정말 고마워요! – phoenix95

0

시도해보기

float value1=float.parse(dataGridView2.row[2].cells[3].value.toString()); 
float value2=float.parse(dataGridView2.row[3].cells[2].value.toString()); 
float sub=value2-value1; 
(dataGridView2.row[3].cells[2].value=sub.toString(); 
+0

당신의 제안에 감사드립니다, 나는 그것을 시도했습니다, 잘 작동하지 않습니다, 말하고있는 오류 메시지가 있습니다. 셀 [3]을 변환 할 수 없습니다. 문자열에. – phoenix95

+0

이 셀 인덱스이거나 행 인덱스가 잘못되었을 수 있습니다. –