Oppure

Loading
31/01/23 17:52
pacifico
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[i].Cells["Tabella A"].Value.ToString());
Totale2 += int.Parse(DataGridView.Rows[i].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.

aaa
31/01/23 20:07
Carlo
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.
dataGridView1.Columns.Clear();
dataGridView1.ColumnCount = 5;
dataGridView1.Columns[0].Name = "ID";
dataGridView1.Columns[1].Name = "Nome";
dataGridView1.Columns[2].Name = "Tabella A";
dataGridView1.Columns[3].Name = "Tabella B";
dataGridView1.Columns[4].Name = "Totale";
dataGridView1.Columns[1].Width = 100;
dataGridView1.Columns[2].Width = 80;
dataGridView1.Columns[3].Width = 80;
dataGridView1.Columns[4].Width = 80;
dataGridView1.Columns[0].Visible = false;
dataGridView1.Rows.Add(1, "Asso", " ", " "); // scrivo su 4 colonne per evitare null
dataGridView1.Rows.Add(2, " ", 6, " "); // scrivo su 4 colonne per evitare null
dataGridView1.Rows.Add(3, " ", " ", 5); // scrivo su 4 colonne per evitare null
dataGridView1.Rows.Add(4, " ", 5, " "); // scrivo su 4 colonne per evitare null
dataGridView1.Rows.Add(5, " ", " ", 7); // scrivo su 4 colonne per evitare null

int Totale = 0, Totale2 = 0;
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
     int col2 = 0;
     // tentativo di conversione da string a int
     if (int.TryParse(dataGridView1.Rows[i].Cells["Tabella A"].Value.ToString(), out col2))
     {
          Totale += col2; // se la conversione è andata a buon fine
     }

     int col3 = 0;
     // tentativo di conversione da string a int
     if (int.TryParse(dataGridView1.Rows[i].Cells["Tabella B"].Value.ToString(), out col3))
     {
          Totale2 += col3; // se la conversione è andata a buon fine
     }
}
dataGridView1.Rows.Add(6,"Totale", Totale, Totale2, Totale + Totale2);
Ultima modifica effettuata da Carlo 01/02/23 11:23
in programmazione tutto è permesso
31/01/23 21:31
pacifico
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.
aaa
01/02/23 8:06
Thejuster
Spostata
mire.forumfree.it/ - Mire Engine
C# UI Designer
01/02/23 11:18
nessuno
Pacifico ... chiedi questa cosa dai tempi di Masterdrive ... quante volte ne abbiamo parlato e ancora la stessa domanda ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
05/02/23 16:45
pacifico
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:

DataGridView.Rows.Add(1, nodotextbox1.InnerText, nodotextbox8.InnerText, nodotextbox12.InnerText);
 
DataGridView.Rows.Add(2, nodotextbox2.InnerText, nodotextbox7.InnerText, nodotextbox11.InnerText);
 
DataGridView.Rows.Add(3, nodotextbox3.InnerText, nodotextbox6.InnerText, nodotextbox10.InnerText);
 
DataGridView.Rows.Add(4, nodotextbox4.InnerText, nodotextbox5.InnerText, nodotextbox9.InnerText);
 
ed il codice per effettuare la somma:
 
int Totale = 0, Totale2 = 0;
for (int i = 0; i < DataGridView.Rows.Count; i++)
{
  int col2 = 0;
  tentativo di conversione da string a int
  if (int.TryParse(DataGridView.Rows[i].Cells      ["Tabella A"].Value.ToString(), out col2))
  {
     Totale += col2; 
  }
  int col3 = 0;
  tentativo di conversione da string a int
  if (int.TryParse(DataGridView.Rows[i].Cells     ["Tabella B"].Value.ToString(), out col3))
  {
    Totale2 += col3; 
}
}
  DataGridView.Rows.Add(5, "Totale", Totale, Totale2, Totale + Totale2);

Mi scuso della confusione che ho creato.

Anticipatamente ringrazio, saluto.

Domenico.
aaa
05/02/23 21:46
Carlo
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 05/02/23 22:09
in programmazione tutto è permesso
05/02/23 22:26
pacifico
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.
aaa