135 messaggi dal 01 novembre 2012
Buongiorno,

in DataGridView gradirei saper con un MSGBOX se una determinata cella (per es. la 3) è vuota o meno.
Ho provato con il seguente codice e mi da sempre Cella Vuota.
if (string.IsNullOrEmpty(DataGridView.Rows[DataGridView.CurrentCell.RowIndex].Cells[3].Value as string))
{
  MessageBox.Show("Il campo è vuoto");
  return;
}
else
{
  MessageBox.Show("Il campo è pieno");
  return;
}


anticipatamente ringrazio e fiducioso di un gradito suggerimento, saluto.
Domenico.
Ciao!
penso che il problema dipenda dalla selezione attuale della cella ((DataGridView.Rows[DataGridView.CurrentCell.RowIndex])
Quel metodo dove viene eseguito?

ho fatto una prova banalissima con il codice seguente, messo all'interno di un button:
Creo prima dei dati fittizzi per il datagrid e poi faccio lo stesso controllo che hai fatto tu e funziona ma solo se prima seleziono una riga del datagrid altrimenti mi dice che è vuoto.

 DataTable People = new DataTable("People");

            //Create the Columns in the DataTable

            DataColumn c0 = new DataColumn("Name");

            DataColumn c1 = new DataColumn("Phone");

            DataColumn c2 = new DataColumn("Address");

            //Add the Created Columns to the Datatable

            People.Columns.Add(c0);

            People.Columns.Add(c1);

            People.Columns.Add(c2);

            //Create 3 rows

            DataRow row, row1, row2;

            row = People.NewRow();

            row["Name"] = "Fred";

            row["Phone"] = "555-1234";

            row["Address"] = "Hollywood CA";

            row1 = People.NewRow();

            row1["Name"] = "Bob";

            row1["Phone"] = "555-4567";

            row1["Address"] = "Washington DC";

            row2 = People.NewRow();

            row2["Name"] = "Sam";

            row2["Phone"] = "555-7890";

            row2["Address"] = "Milwaukee WI";

            //Add 3 rows to table

            People.Rows.Add(row);

            People.Rows.Add(row1);

            People.Rows.Add(row2);

            dataGridView1.DataSource = People;
            if (string.IsNullOrEmpty(dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[1].Value as string))
            {
                MessageBox.Show("Il campo è vuoto");
                return;
            }
            else
            {
                MessageBox.Show("Il campo è pieno");
                return;
            }


Fammi sapere se ti stato utile!
Maurizio
135 messaggi dal 01 novembre 2012
Gent.mo Maurizio,

mi scuso del ritardo solo ora ho visto il tuo intervento e ringrazio della gentilezza e disponibilità.

Ho inserito il codice che mi hai fornito e pur cancellando una voce della terza cella seconda riga mi dice sempre che è piena anzichè vuota.

Allego il link dove gentilmente potresti prelevare il file per visionare.

Fiducioso dell'aiuto, auguro una buona giornata.
Domenico.

https://www.mediafire.com/file/08ukkhzu5rwnpm1/Prova.rar/file
Ciao Domenico!
ho visionato il tuo file e ho fatto le correzioni necessarie, lo trovi al link seguente:
https://www.mediafire.com/file/6jfjevx18uzl5bf/Prova_Final.zip/file

Ti spiego anche velocemente cosa ho fatto:
- Ho spostato la creazione e riempimento del datagrid all'inizializzazioen del form.
- creato due pulsanti, uno per il check di un intera riga ( per vedere se un campo di quella riga è vuoto) e uno per il check della singola cella selezionata.

Il codice di prima ti diceva che la cella è sempre piena anzichè vuota perchè la condizione nel codice controllava una cella specifica


   if (string.IsNullOrEmpty(dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[1].Value as string))
            {
                MessageBox.Show("Il campo è vuoto");
                return;
            }


dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[1].Value -> indica il valore all'interno della prima cella nella riga attualmente selezionata.
Avendo messo il controllo sul pulsante OK , subito dopo la creazione della tabella, automaticamente veniva selezionata la prima riga e quindi automaticamente controllava sempre la prima cella ( in realtà la seconda in quanto in base zero).

per verificare se la cella è piena o vuota ho usato il codice seguente


  var myValue = DataGridView.CurrentCell.Value as string;
            if (string.IsNullOrWhiteSpace(myValue as string))
            {
                MessageBox.Show("La cella selezionata è vuota");
            }
            else
            {
                MessageBox.Show(myValue as string);
            }


DataGridView.CurrentCell -> per verificare solo la cella attualmente selezionata.

Se voglio controllare tutta la riga nella sua interezza, il codice seguente

  var contatoreNumeroColonna = 0;
            foreach (DataGridViewTextBoxCell cell in DataGridView.Rows[DataGridView.CurrentCell.RowIndex].Cells)
            {
                if (string.IsNullOrWhiteSpace(cell.Value as string))
                {
                    MessageBox.Show($"La riga selezionata ha il campo {DataGridView.Columns[contatoreNumeroColonna].HeaderText} vuoto");
                    return;
                }
               
                contatoreNumeroColonna++;
            }
         
            MessageBox.Show("La riga selezionata ha tutti i campi compilati");           


Fammi sapere se ti è di aiuto!
Maurizio
135 messaggi dal 01 novembre 2012
Gent.mo Maurizio,

non ho parola come ringraziare oltre alla disponibilità la cortesia, soprattutto la spiegazione grazie.

Finalmente funziona e va a migliorare un programma terminato.

Riscontro un problema che riguarda le scadenze che funziona saltuariamente e prima di aprire un'altra discussione cerco di risolvere.

Auguro un buon pomeriggio, saluto e grazie

Domenico.
2 messaggi dal 10 febbraio 2022
glasses 4 you provide highest quality cheap reading glasses uk, goggles4u sunglasses and represents the company’s years of expertise. ??British order glasses online uk, prescription glasses online can give significant discounts to its millions of consumers throughout the world via backward and forward integration (developing, producing, and distributing its cheap online glasses).cheap prescription glasses uk
Modificato da britishgoggles4u il 10 febbraio 2022 21:35 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.