[ nexxogen @ 08.08.2011. 19:28 ] @
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?
[ Igor Gajic @ 08.08.2011. 19:35 ] @
Kada se pokrene CellEndEdit proveri da li je sender kolona Konto, ako jeste onda izvrsis logiku, ako nije nikom nista
[ nexxogen @ 08.08.2011. 19:55 ] @
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. :(
[ nexxogen @ 08.08.2011. 20:11 ] @
Snašao sam se. :)

Hvala, ovo mi je svakako pomoglo.
[ Igor Gajic @ 08.08.2011. 20:24 ] @
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);
                }
            }
        }
 


[ AMD guy @ 09.08.2011. 12:37 ] @
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"))
[ nexxogen @ 09.08.2011. 12:38 ] @
@ 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ć?
[ Igor Gajic @ 09.08.2011. 13:00 ] @
@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.