Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 7 odgovora
  • 2.683 pregleda

Najnovija ↓

C# DataGridView Event Problem 08.08.2011. u 20:28 · pre 185 meseci #1
Imam problem za koji nisam uspio da nađem rešenje na netu. Koristim DataGridView za prikaz i manipulaciju podacima iz baze. Imam kolonu "Konto" u kojoj imam petocifrenu ili šestocifrenu šifru koju dovlačim iz baze i na osnovu koje treba da popunim još tri kolone: "Nivo I", "Nivo II" i "Nivo III" i to tako što će Nivo I da sadrži prvu cifru konta, Nivo II prve dvije cifre, a Nivo III prve tri cifre. Problem se sastoji u tome što ne znam kako da pokrenem CellEndEdit event SAMO ZA KOLONU Konto! Ono što ja zovem se odnosi na sve kolone čija se vrijednost mijenja što naravno ne može tako da stoji zbog bespotrebnog trošenja resursa kao i zbog drugih problema.

Prostije rečeno, kako se pokreće neki DataGridView Event (konkretno CellEndEdit) samo za pojedinačnu kolonu, a ne za sve kolone?

Da li neko može da mi pomogne?
Potpis
Just becouse you said it, doesn't make it so!
Re: C# DataGridView Event Problem 08.08.2011. u 20:35 · pre 185 meseci #2
Kada se pokrene CellEndEdit proveri da li je sender kolona Konto, ako jeste onda izvrsis logiku, ako nije nikom nista ;)
Re: C# DataGridView Event Problem 08.08.2011. u 20:55 · pre 185 meseci #3
Hvala na odgovoru. Na žalost ovo mi još nije riješilo problem.

Kompajler vidi DataGridView kao sender, a ne specifično polje koje se edituje. :(
Potpis
Just becouse you said it, doesn't make it so!
Re: C# DataGridView Event Problem 08.08.2011. u 21:24 · pre 185 meseci #5
Code (csharp):

        private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            DataGridView dgv = (DataGridView)sender;
            DataGridViewColumn column = dgv.Columns[e.ColumnIndex];
            if (column.Name.Equals("Konto"))
            {
                string text = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value as string;

                if (!String.IsNullOrEmpty(text) && text.Length >= 3)
                {
                    dgv.Rows[e.RowIndex].Cells["Nivo1"].Value = text.Substring(0, 1);
                    dgv.Rows[e.RowIndex].Cells["Nivo2"].Value = text.Substring(0, 2);
                    dgv.Rows[e.RowIndex].Cells["Nivo3"].Value = text.Substring(0, 3);
                }
            }
        }
 


Re: C# DataGridView Event Problem 09.08.2011. u 13:37 · pre 185 meseci #6
jel mozes da mi objasnis ova tri reda
Code (csharp):
DataGridView dgv = (DataGridView)sender;
            DataGridViewColumn column = dgv.Columns[e.ColumnIndex];
            if (column.Name.Equals("Konto"))
Potpis
http://i.imgur.com/V3feW.jpg
http://on.wsj.com/H9yjz6 -- India Graduates Millions, but Too Few Are Fit to Hire
Re: C# DataGridView Event Problem 09.08.2011. u 13:38 · pre 185 meseci #7
@ Igor Gajić

Ja sam to malo drugačije, al hvala u svakom slučaju. :)

Mada, sad me zaintrigira... Zašto praviš novi dgv i zašto castuješ sender u dgv, kad je on to već?
Potpis
Just becouse you said it, doesn't make it so!
Re: C# DataGridView Event Problem 09.08.2011. u 14:00 · pre 185 meseci #8
@nexxogen
U pitanju je samo referenca, tako da se ne kreira novi objekat u memoriji, a kod je citljiviji...

@AMD guy

1. Kreiram referencu na sender, odnosno na DataGridView u kome se desio dogadjaj
2. Uzimam kolonu u kojoj se nalazi celija koja je ispalila event, na osnovu e.ColumnIndex
3. Proveravam da li je to 'Konto' kolona.
Sviđa mi se2
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme