CellValidating in dataGridView

CellValidating in dataGridView

offline
  • Pridružio: 08 Sep 2005
  • Poruke: 70

U svojoj aplikaciji imam jednu dataGridView kontrolu koja nije povezana sa bazom nego je ja "rucno" punim. I sad zelim da validiram podatke u jednoj koloni tabele ali ne tako da se ne dozvoli napustanje celije dok se ne unese prava vrednost, vec da samo oznaci (promenom pozadinske boje) da je ta vrednost van nekog opsega.
Ja sam to odradio uz pomoc CellValidating eventa ali imam problem jer ne funkcionise kako bi trebalo. Naime, kad unosim vrednosti po prvi put, znaci krenem od prve vrste pa tako do zadnje na svaki izlazak iz celije mi "baca" izuzetak, bez obzira da li je to potrebno ili ne, a celije uopste ne farba. Kad krenem da se vracam, tj, kad drugi put ulazim i izlazim iz celije onda sve funkcionise ispravno: ako je vrednost van opsega menja boju, ako nije nista itd. U cemu je problem, greska, pa pri prvom izlasku iz celije uvek "baca" izuzetak. Evo koda:

private void dataGridView1_CellValidating(object sender, System.Windows.Forms.DataGridViewCellValidatingEventArgs e)         {             try             {                                        if (e.ColumnIndex == 1)                 {                     float pom = float.Parse(Convert.ToString(dataGridView1[e.ColumnIndex, e.RowIndex].Value));                     if ((Convert.ToSingle(dataGridView1[e.ColumnIndex, e.RowIndex].Value) < Convert.ToSingle(dataGridView1[2, e.RowIndex].Value)) | (Convert.ToSingle(dataGridView1[e.ColumnIndex, e.RowIndex].Value) > Convert.ToSingle(dataGridView1[3, e.RowIndex].Value)))                                            dataGridView1[e.ColumnIndex, e.RowIndex].Style.BackColor = Color.MistyRose;                        else                         dataGridView1[e.ColumnIndex, e.RowIndex].Style.BackColor = SystemColors.Window;                 }                             }             catch (FormatException fe)             {                 MessageBox.Show("Грешка у уносу података, у типу вредности.", "Н е п р а в и л н о с т", MessageBoxButtons.OK, MessageBoxIcon.Warning);             }                    }
Izuzetak se prvi put baca iz reda:
float pom = float.Parse(Convert.ToString(dataGridView1[e.ColumnIndex, e.RowIndex].Value));
koji sam stavio da bi imao proveru da li je vrednost tipa float. Cak iako izbacim taj red i pazim da unosim samo float vrednosti isto se desava samo iz if naredbe. Zasto prvi kad na iste vrednosti drugi put prosetam kolonom sve funkcionise. Kako da resim da na prvi izlazak iz celije isto dobro radi.

U P O M O C ! ! !



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Reaguje ti na praznu celiju? Probaj da celije napunis nulama ili necim sto je tebi neutralno pre nego sto udjes u ovu proceduru.



offline
  • Pridružio: 08 Sep 2005
  • Poruke: 70

Koji sam ja ... Isto to mi se desilo juce i skapirao sam da je greska u tome sto reaguje na praznu celiju, tj "" koji sam upisivao, pa sam pre odgovarajuceg koda u programu postavio if naredbu koja ce ako je sadrzaj == "" da radi jedno ako nije onda drugo. A ovde sam skroz to izgubio iz vida.
OK, razresio sam prvi deo, HVALA. Ali ima kvaka, popunio sam polja nulama, ali sad kad unesem u celiju neku vrednost koja je van opsega on opet nece odma da promeni boju vec tek kad drugi put izadjem iz celije. Isto je i ako unesem znakove, tek kad drugi put izadjem iz nje javlja se izuzetak. I kad se ponovo vratim da umesto znakova upisem brojeve, on opet baci izuzetak iako su unutra brojevi. Ne kapiram. Apsolutno mi nije jasno

Ko je trenutno na forumu
 

Ukupno su 842 korisnika na forumu :: 41 registrovanih, 7 sakrivenih i 794 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., Apok, Boris BM, Denaya, dijica, draganca, flash12, FOX, galerija, Georgius, hologram, jackreacher011011, Karla, kihot, kikisp, ksyyaj, kybonacci, Leonov, Lieutenant, Lubica, mercedesamg, Metanoja, milos.cbr, Miloskec, NikolaGTR, NoOneEver Dreams, nuke92, panzerwaffe, Pikac-47, RJ, ruger357, sevenino, Sokic, Tvrtko I, vathra, VJ, vlajkox, wizzardone, wolverined4, yufighter, ZetaMan