Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - C# Somma valori alle colonne del DataGridView.
Forum - C# / VB.NET - C# Somma valori alle colonne del DataGridView.

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
pacifico (Normal User)
Rookie


Messaggi: 34
Iscritto: 11/12/2012

Segnala al moderatore
Postato alle 18:52
Martedì, 31/01/2023
Buonasera,

Il problema che gradirei risolvere riguarda la somma delle colonne del DataGridView.
Ho provato con il seguente codice

DataGridView.Columns.Clear();
DataGridView.ColumnCount = 5;
DataGridView.Columns[0].Name = "ID";
DataGridView.Columns[1].Name = "Nome";
DataGridView.Columns[2].Name = "Tabella A";
DataGridView.Columns[3].Name = "Tabella B";
DataGridView.Columns[4].Name = "Totale";
DataGridView.Columns[1].Width = 100;
DataGridView.Columns[2].Width = 80;
DataGridView.Columns[3].Width = 80;
DataGridView.Columns[4].Width = 80;
DataGridView.Columns[0].Visible = false;
DataGridView.Rows.Add(1, "Asso");
DataGridView.Rows.Add(2, " ", 5);
DataGridView.Rows.Add(3, " ", " ", 5);
DataGridView.Rows.Add(4, " ", 5);
DataGridView.Rows.Add(5, " ", " ", 5);
DataGridView.Rows.Add(6, "Totale");
int Totale = 0, Totale2 = 0;
for (int i = 0; i < DataGridView.Rows.Count - 1; i++)
{
  Totale += int.Parse(DataGridView.Rows.Cells["Tabella A"].Value.ToString());
  Totale2 += int.Parse(DataGridView.Rows.Cells["Tabella B"].Value.ToString());
}
DataGridView.Rows.Add(6, "Totale", Totale, Totale2);

Auguro che possiare suggerire per la soluzione, ringrazio anticipatamente e fiducioso, saluto.
Domenico.


PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1389
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 21:07
Martedì, 31/01/2023
Non hai messo il codice dentro al tag: Code
Il nome DataGridView è un tipo definito è sconsigliato usarlo.
Riga 24 e riga 31 avevi omesso l'indice su Rows.
Quando leggi le celle se non ci hai mai scritto nulla riceverai un null, o prima controlli se è null, oppure non le leggi, oppure come ho fatto io ci scrivi qualcosa.
Quando leggi le celle è meglio "provare" con TryParse per convertire da string a int, con Parse se nella cella non c'è un numero avresti un errore.
La riga 6 la puoi aggiungere dopo aver fatto i calcoli.
Codice sorgente - presumibilmente C#

  1. dataGridView1.Columns.Clear();
  2. dataGridView1.ColumnCount = 5;
  3. dataGridView1.Columns[0].Name = "ID";
  4. dataGridView1.Columns[1].Name = "Nome";
  5. dataGridView1.Columns[2].Name = "Tabella A";
  6. dataGridView1.Columns[3].Name = "Tabella B";
  7. dataGridView1.Columns[4].Name = "Totale";
  8. dataGridView1.Columns[1].Width = 100;
  9. dataGridView1.Columns[2].Width = 80;
  10. dataGridView1.Columns[3].Width = 80;
  11. dataGridView1.Columns[4].Width = 80;
  12. dataGridView1.Columns[0].Visible = false;
  13. dataGridView1.Rows.Add(1, "Asso", " ", " "); // scrivo su 4 colonne per evitare null
  14. dataGridView1.Rows.Add(2, " ", 6, " "); // scrivo su 4 colonne per evitare null
  15. dataGridView1.Rows.Add(3, " ", " ", 5); // scrivo su 4 colonne per evitare null
  16. dataGridView1.Rows.Add(4, " ", 5, " "); // scrivo su 4 colonne per evitare null
  17. dataGridView1.Rows.Add(5, " ", " ", 7); // scrivo su 4 colonne per evitare null
  18.  
  19. int Totale = 0, Totale2 = 0;
  20. for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
  21. {
  22.      int col2 = 0;
  23.      // tentativo di conversione da string a int
  24.      if (int.TryParse(dataGridView1.Rows[i].Cells["Tabella A"].Value.ToString(), out col2))
  25.      {
  26.           Totale += col2; // se la conversione è andata a buon fine
  27.      }
  28.  
  29.      int col3 = 0;
  30.      // tentativo di conversione da string a int
  31.      if (int.TryParse(dataGridView1.Rows[i].Cells["Tabella B"].Value.ToString(), out col3))
  32.      {
  33.           Totale2 += col3; // se la conversione è andata a buon fine
  34.      }
  35. }
  36. dataGridView1.Rows.Add(6,"Totale", Totale, Totale2, Totale + Totale2);


Ultima modifica effettuata da Carlo il 01/02/2023 alle 12:23


in programmazione tutto è permesso
PM Quote
Avatar
pacifico (Normal User)
Rookie


Messaggi: 34
Iscritto: 11/12/2012

Segnala al moderatore
Postato alle 22:31
Martedì, 31/01/2023
Gent.mo Carlo,

ringrazio della gentilezza e tempestività e mi scuso per non aver rispettato le regole dovuta a troppa fretta.

Rinnovo le scuse ed auguro buon proseguimento di serata.

Domenico.

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2331
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 9:06
Mercoledì, 01/02/2023
Spostata


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 12:18
Mercoledì, 01/02/2023
Pacifico ... chiedi questa cosa dai tempi di Masterdrive ... quante volte ne abbiamo parlato e ancora la stessa domanda ...

PM Quote
Avatar
pacifico (Normal User)
Rookie


Messaggi: 34
Iscritto: 11/12/2012

Segnala al moderatore
Postato alle 17:45
Domenica, 05/02/2023
Gent.mi,

solo ora ho visto l'intervento di Thejuster per aver aperto una nuova discussione con lo stesso argomento.

Ho ritenuto opportuno aprire una nuova per il semplice motivo che la precedente è stata risolta e che riguardava la somma dei valori numerici dalle TextBox al DataGridView mentre ora riguarda sempre la somma dei file numerici salvati in Xml al DataGridView che non effettua la somma.
Non comprendo il motivo, ho fatto diverse prove con esito negativo.

Riporto il codice del caricamento del DataGridView dei file numerici salvati in Xml.

Carica DataGridView dai file salvati in Xml:

Codice sorgente - presumibilmente C#

  1. DataGridView.Rows.Add(1, nodotextbox1.InnerText, nodotextbox8.InnerText, nodotextbox12.InnerText);
  2.  
  3. DataGridView.Rows.Add(2, nodotextbox2.InnerText, nodotextbox7.InnerText, nodotextbox11.InnerText);
  4.  
  5. DataGridView.Rows.Add(3, nodotextbox3.InnerText, nodotextbox6.InnerText, nodotextbox10.InnerText);
  6.  
  7. DataGridView.Rows.Add(4, nodotextbox4.InnerText, nodotextbox5.InnerText, nodotextbox9.InnerText);
  8.  
  9. ed il codice per effettuare la somma:
  10.  
  11. int Totale = 0, Totale2 = 0;
  12. for (int i = 0; i < DataGridView.Rows.Count; i++)
  13. {
  14.   int col2 = 0;
  15.   tentativo di conversione da string a int
  16.   if (int.TryParse(DataGridView.Rows[i].Cells      ["Tabella A"].Value.ToString(), out col2))
  17.   {
  18.      Totale += col2;
  19.   }
  20.   int col3 = 0;
  21.   tentativo di conversione da string a int
  22.   if (int.TryParse(DataGridView.Rows[i].Cells     ["Tabella B"].Value.ToString(), out col3))
  23.   {
  24.     Totale2 += col3;
  25. }
  26. }
  27.   DataGridView.Rows.Add(5, "Totale", Totale, Totale2, Totale + Totale2);



Mi scuso della confusione che ho creato.

Anticipatamente ringrazio, saluto.

Domenico.

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1389
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 22:46
Domenica, 05/02/2023
Il file con i dati numerici salvati in Xml, ce lo fai vedere?
Come lo carichi ce lo fai vedere?
Le colonne del DataGridView con i nomi "Tabella A" e "Tabella B" dove le crei?
Ecc. ecc.
Oppure ci dici che errori hai, il programma incompleto che hai postato è palese che non funziona.

Ultima modifica effettuata da Carlo il 05/02/2023 alle 23:09


in programmazione tutto è permesso
PM Quote
Avatar
pacifico (Normal User)
Rookie


Messaggi: 34
Iscritto: 11/12/2012

Segnala al moderatore
Postato alle 23:26
Domenica, 05/02/2023
Gent.mo Carlo,

ringrazio della gentilezza e disponibilià.

Anzichè trascrivere i vari codici e per non creare eventuali errori (copia ed incolla), posso inviare il file zippato?

Creo la parte che non funziona.

Domenico.

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1389
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 0:26
Lunedì, 06/02/2023
Testo quotato

Postato originariamente da pacifico:
Anzichè trascrivere i vari codici e per non creare eventuali errori (copia ed incolla), posso inviare il file zippato?

Creo la parte che non funziona.

Domenico.



Si, allega pure...:k:


in programmazione tutto è permesso
PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo