2017-02-20 1 views
0

Ich habe Probleme, mathematische Operation in Datagridview wie in Ms. Excel zu tun, genauer gesagt, ich möchte Zeile [2] und Zeile [3] Spalte Schließen abziehen, und das Ergebnis werde ich in der Spalte speichern.Wie funktioniert die mathematische Operation in Datagridview mit C#?

// Lassen Sie uns das Tabelle annehmen Index von Nummer beginnen 1

This is data image

Ich werde meinen Code

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

note zeigen: Ich SQL Server verwenden, dann die Daten in Datagridview abrufen nicht dataTable

+0

was die Werte, die Sie abziehen wollte, Sie schließen Spalte von Datumsspalte oder Datumsspalte aus der Nähe Spalte und auch, warum Sie tun möchten, subtrahieren wollten, dass die Berechnungen im Raster, warum führen Sie nicht mit denen Berechnungen in Ihrer Datentabelle und binden sie mit Gitter? –

+0

Bitte werfen Sie einen Blick auf [how-to-ask] (http://stackoverflow.com/help/how-to-ask). Bitte verlinken Sie nicht auf Daten, sondern hier. – swe

+0

Ich möchte zwischen Zeile [2] und Zeile [1] bei Spalte schließen (ex: 900.00-900.00), dann das Ergebnis ich in Spalte setzen – phoenix95

Antwort

0

nur durch die Zeilen durchlaufen. dann können Sie Ihre mathematischen Operationen ausführen, wie Sie möchten. check this:

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

es funktioniert wirklich, vielen Dank für Ihre Hilfe !!! – phoenix95

0

versuchen Sie dies

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

Vielen Dank für Ihren Vorschlag, ich habe es versucht, es funktioniert nicht gut, es gibt eine Fehlermeldung, die sagen, ich kann nicht Zelle [3] stringeln. – phoenix95

+0

kann Zellindex oder Zeilenindex falsch sein. –

Verwandte Themen