Dal Form4 al Form1 datagridview1 non conta.

di il
4 risposte

Dal Form4 al Form1 datagridview1 non conta.

In c# ho un Form4 con una datagridview1 con 3 colonne e 4005 righe con dei numeri. Nel form4 ho anche un button1 che quando clicco sopra mi deve creare una quarta colonna nella datagridview1. Nella quarta colonna mi deve contare quante volte è presente il numero nella colonna 2 insieme al numero della colonna 3 e viceversa, nella datagridview1 del Form1, colonna da 2 a 6.

Il mio problema è, e che non conta, nella colonna 4 del Form4, datagridview1 esce tutti zero. Come risolvo il problema?

private void Button1_Click(object sender, EventArgs e)
        {
            // Aggiungi la quarta colonna
            DataGridViewTextBoxColumn newColumn = new DataGridViewTextBoxColumn();
            newColumn.Name = "Conteggio";
            newColumn.HeaderText = "Conteggio";
            dataGridView1.Columns.Add(newColumn);

            // Ottieni il DataGridView dal Form1
            Form1 form1 = (Form1)Application.OpenForms["Form1"];
            var dataGridView2 = form1.dataGridView1;

            // Conta le occorrenze
            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                var valCol2 = dataGridView1.Rows[i].Cells[1].Value; // Colonna 2
                var valCol3 = dataGridView1.Rows[i].Cells[2].Value; // Colonna 3

                // Esegui il conteggio
                int count = 0;

                foreach (DataGridViewRow row in dataGridView2.Rows)
                {
                    if (row.Cells[1].Value != null && row.Cells[2].Value != null)
                    {
                        if (row.Cells[1].Value.Equals(valCol2) && row.Cells[2].Value.Equals(valCol3) ||
                            row.Cells[1].Value.Equals(valCol3) && row.Cells[2].Value.Equals(valCol2))
                        {
                            count++;
                        }
                    }
                }

                // Assegna il conteggio nella nuova colonna
                dataGridView1.Rows[i].Cells[3].Value = count; // Colonna 4 (indice 3)
            }
        }

4 Risposte

  • Re: Dal Form4 al Form1 datagridview1 non conta.

    Se la griglia è associata ad una fonte dati (una query) devi modificare la query aggiungendo il campo calcolato.

  • Re: Dal Form4 al Form1 datagridview1 non conta.

    Non sto usando una query. La datagridview1 del form1 viene popolata da un file excel. Sto usando la libreria EPPlus per aprire il file excel.

  • Re: Dal Form4 al Form1 datagridview1 non conta.

    Se la fonte è Excel non cambia niente. Devi modificare il file Excel

  • Re: Dal Form4 al Form1 datagridview1 non conta.

    25/10/2024 - bytebit74 ha scritto:


    mi deve contare quante volte è presente il numero nella colonna 2 insieme al numero della colonna 3 e viceversa

    Forse questo ti confonde…

    Se a1=b1 allora per quello strano principio matematico anche b1=a1 ergo il viceversa non ti serve.

    Quindi, basta che

    Conta=0

    For x bla bla…

      Se riga[x].colonna[n]=riga[x].colonna[m]        

              conta=conta+1

             Riga[x].colonna[Y]=conta

        Fine se

    Tutto quel codice cosa dovrebbe fare?

    Non capisco quale deve essere il risultato finale.

Devi accedere o registrarti per scrivere nel forum
4 risposte