Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Imam problema prilikom formiranja kljuca za dictionary

[es] :: .NET :: Imam problema prilikom formiranja kljuca za dictionary

[ Pregleda: 2452 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

RMAN
Milan Đukić
student
Knićanin

Član broj: 32492
Poruke: 1166
*.dynamic.sbb.rs.



+5 Profil

icon Imam problema prilikom formiranja kljuca za dictionary27.11.2009. u 20:41 - pre 175 meseci
Evo ovako:

Radim neki projekat za faks. Radili smo nesto sa gridom. Sa glavnog prozora pozivam 5 dijaloga, ali iz nekih dijaloga mogu da pozivam i druge dijaloge od tih 5 sa glavnog prozora.

Na primer:
Na glavnom prozoru mi se nalazi:

Klijent
Destinacija
Aranzman

Kada pozovem Destinaciju i Klijenta sa glavne forme prvo mi se pojavi grid sa podacima na kome imam button unos i na taj nacin pozivam klijenta i punim grid.
Isto tako i za destinaciju. Klijent i destinacija mi imaju prost kljuc za dictionary a to su neka oznaka destinacije koja se generise na osnovu broja destinacija u dictionary-ju a klijentov kljuc ima JMBG. I sa ovim nemam problema.

Medjutim, kada ucitavam aranzman tada imam sledecu situaciju:


Kljuc za dictionary mi se formira kao (oznaka aranzmana)+ "|" +(oznaka destinacije).

Sad mene zanima koji je NAJBOLJI nacin da na osnovu izabrane destinacije iz combo box-a pristupim njenim informacijama (oznaka i naziv destinacije)??
Ja sam to resio na fazonu nekog "brute-force-a", na sledeci nacin:
Pored imena destinacije u combo box-u dodao sam i njenu oznaku. I sada kada korisnik izabere neku destinaciju tada ja "čupam" tu oznaku sa while petljom koja ide do crtice("-"). Na taj nacin sa "isčupao" kljuc izabrane destinacije i sad je opusteno nadjem u dictionary-ju i svim njenim poljima.

--------------------------------
Zanima me koliko je ovo glup nacin?
Kako pametnije ovo da resim?

[Ovu poruku je menjao RMAN dana 27.11.2009. u 22:27 GMT+1]
Eureka!

MILAN DJUKIC
D J U K A
Prikačeni fajlovi
 
Odgovor na temu

Dejan Carić
Oslo, Norway

Član broj: 230976
Poruke: 232
93.87.183.*

Sajt: www.dcaric.com


+26 Profil

icon Re: Imam problema prilikom formiranja kljuca za dictionary28.11.2009. u 01:00 - pre 175 meseci
Da li koristiš biznis objekte ili na formi bind-uješ DataSet? Nije mi jasno zašto koristiš dictionary...
Što se combobox-a tiče, on ima tri property-ja koja su ti bitna: DisplayMember, ValueMember i SelectedValue.

Pretpostavimo da imaš sledeću tabelu koju želiš da vežeš za combobox.
Code:

DataTable dt = new DataTable();
dt.Columns.Add("SIFRA", typeof(int));
dt.Columns.Add("NAZIV", typeof(string));

Punjenje combobox-a:
Code:

comboBox1.DataSource = dt;
comboBox1.DisplayMember = "NAZIV";
comboBox1.ValueMember = "SIFRA";

Čitanje selektovane vrednosti:
Code:
comboBox1.SelectedValue // daje vrednost polja 'SIFRA'


Nije dobro da se ključ čita iz teksta koji je prikazan u combobox-u zato što ćeš možda kasnije želeti da sakriješ tu informaciju zbog bezbednosnih razloga, estetskih razloga, itd.
 
Odgovor na temu

RMAN
Milan Đukić
student
Knićanin

Član broj: 32492
Poruke: 1166
*.dynamic.sbb.rs.



+5 Profil

icon Re: Imam problema prilikom formiranja kljuca za dictionary28.11.2009. u 09:52 - pre 175 meseci
Imam problema prilikom ispisivanja sadrzaja combo box-a:

Ovako sam uradio for petlu za osvezavanje:
Code:
         for (int i = 1; i <= ta.BrojDestinacija(); i++)
            {
                dest = ta.NadjiDestinaciju(i);
                DataTable dt = new DataTable();
                dt.Columns.Add(dest.oznaka);
                dt.Columns.Add(dest.naziv);

                cbDestinacija.DataSource = dt;

                cbDestinacija.DisplayMember = dt.Columns[1].ToString();
                cbDestinacija.ValueMember = dt.Columns[0].ToString();
            }



ta.BrojDestinacija() predstavlja trenutan broj destinacija u dictionary-ju.
Nece da mi osvezi combo a sa message.box-om sam proverio i sve vrednosti su ok, znaci cbDestinacija.DisplayMemeber dobija ok vrednost.

Citat:
Da li koristiš biznis objekte ili na formi bind-uješ DataSet? Nije mi jasno zašto koristiš dictionary...
Što se combobox-a tiče, on ima tri property-ja koja su ti bitna: DisplayMember, ValueMember i SelectedValue.


Ne znam sta je biznis objekat i sta znaci bind-ovanje jos to nismo radili. Dictionary koristim jer nam je to uslov za ocenu.
Eureka!

MILAN DJUKIC
D J U K A
 
Odgovor na temu

Dejan Carić
Oslo, Norway

Član broj: 230976
Poruke: 232
77.46.217.*

Sajt: www.dcaric.com


+26 Profil

icon Re: Imam problema prilikom formiranja kljuca za dictionary28.11.2009. u 16:29 - pre 175 meseci
Nije dobro punjenje combobox-a.
Tabelu koja će ti biti data source za combobox definiši ispred for petlje.
Punjenje tabele sa podacima uradi unutar for petlje, a povezivanje tabele i combobox-a uradi izvan for petlje.
 
Odgovor na temu

night-shift
Vukašin Sadžak
• Student FTN, • Software developer
• Futog/Novi Sad

Član broj: 17930
Poruke: 1213
93.87.240.*

Sajt: www.netolerancija.com


+8 Profil

icon Re: Imam problema prilikom formiranja kljuca za dictionary28.11.2009. u 22:12 - pre 175 meseci
Evo kako sam ja uradio punjenje ComboBox-ova, ako ti može pomoći:

Code:
public void NapuniComboBoxSaKlijentima()
        {
            cBoxKlijenti.Items.Clear();
            Klijent klijent = null;
            Dictionary<string, Klijent>.Enumerator en = ta.KlijentBegin();
            for (int i = 0; i < ta.BrojKlijenata(); i++)
            {
                klijent = en.Current.Value;
                cBoxKlijenti.Items.Add(klijent.Ime + "  " + klijent.Prezime);
                en = ta.KlijentNext(en);
            }
            cBoxKlijenti.SelectedIndex = cBoxKlijenti.Items.Count - 1;
        }


[Ovu poruku je menjao night-shift dana 28.11.2009. u 23:39 GMT+1]
La parole est d'argent, mais le silence est d'or.
www.netolerancija.com
 
Odgovor na temu

RMAN
Milan Đukić
student
Knićanin

Član broj: 32492
Poruke: 1166
*.dynamic.sbb.rs.



+5 Profil

icon Re: Imam problema prilikom formiranja kljuca za dictionary28.11.2009. u 23:37 - pre 175 meseci
@Dejan Carić

Nesto mi ne uspeva....
Eureka!

MILAN DJUKIC
D J U K A
 
Odgovor na temu

Dejan Carić
Oslo, Norway

Član broj: 230976
Poruke: 232
77.46.217.*

Sajt: www.dcaric.com


+26 Profil

icon Re: Imam problema prilikom formiranja kljuca za dictionary29.11.2009. u 12:48 - pre 175 meseci
Ne znam koja je svrha dictionary-a (svašta se danas predaje), pa ne bih da ti dam odgovor koji je pogrešan.
Do sada se nisam susretao sa tim da neko vezuje dictionary za combobox. Kao što rekoh, obično se vezuje neka tabela, ili biznis objekat (objekat koji sadrži neku logiku u sebi).

Daću ti par primera pa ti vidi šta ti odgovara i šta možeš da iskoristiš. U svim primerima ću vezati osobu (sadrži samo ime i prezime) za combobox.

1. DataTable
Code:

// definisemo tabelu koja ce biti data source za combobox
DataTable dt = new DataTable();
dt.Columns.Add("OSOBA_ID", typeof(int));
dt.Columns.Add("IME", typeof(string));
dt.Columns.Add("PREZIME", typeof(string));
dt.Columns.Add("NAZIV", typeof(string));

// dodajemo test podatke
DataRow dr = dt.NewRow();
dr["OSOBA_ID"] = 1;
dr["IME"] = "Petar";
dr["PREZIME"] = "Petrovic";
dr["NAZIV"] = "Petar Petrovic";
dt.Rows.Add(dr);

dr = dt.NewRow();
dr["OSOBA_ID"] = 2;
dr["IME"] = "Djordje";
dr["PREZIME"] = "Djordjevic";
dr["NAZIV"] = "Djordje Djordjevic";
dt.Rows.Add(dr);

// vezujemo tabelu za combobox
comboBox1.DataSource = dt;
comboBox1.DisplayMember = "NAZIV";
comboBox1.ValueMember = "OSOBA_ID";

Code:

comboBox1.SelectedValue.ToString() // ovako čitamo selektovanu vrednost tj, id osobe
((DataRowView)comboBox1.SelectedItem)["PREZIME"].ToString() // ovako čitamo prezime osobe

Mana ovog pristupa je što sam morao da ubacim kolonu NAZIV kako bih u combobox-u prikazao puno ime osobe.

2. Lista objekata
Code:

class Osoba
{
    public int OsobaId { get; set; }
    public string Ime { get; set; }
    public string Prezime { get; set; }

    public override string ToString()
    {
        return string.Format("{0} {1}", Ime, Prezime);
    }
}

Code:

IList<Osoba> list = new List<Osoba>();
list.Add(new Osoba { OsobaId = 1, Ime = "Petar", Prezime = "Petrovic" });
list.Add(new Osoba { OsobaId = 2, Ime = "Djordje", Prezime = "Djordjevic" });

comboBox1.DataSource = list;

Code:

(comboBox1.SelectedItem as Osoba).Prezime // ovako čitamo prezime

3. Dictionary
Code:

Dictionary<int, Osoba> dict = new Dictionary<int, Osoba>();

Code:

dict[1] = new Osoba { OsobaId = 1, Ime = "Petar", Prezime = "Petrovic" };
dict[2] = new Osoba { OsobaId = 2, Ime = "Djordje", Prezime = "Djordjevic" };

comboBox1.DataSource = new BindingSource(dict, null);
comboBox1.DisplayMember = "Value";
comboBox1.ValueMember = "Key";

Code:

(int)comboBox1.SelectedValue // ovako uzimamo id osobe
dict[(int)comboBox1.SelectedValue].Prezime // ovako uzimamo prezime osobe

 
Odgovor na temu

RMAN
Milan Đukić
student
Knićanin

Član broj: 32492
Poruke: 1166
*.opera-mini.net.



+5 Profil

icon Re: Imam problema prilikom formiranja kljuca za dictionary30.11.2009. u 00:16 - pre 175 meseci
Hvala ti, uspelo je! Pozdrav!
Eureka!

MILAN DJUKIC
D J U K A
 
Odgovor na temu

[es] :: .NET :: Imam problema prilikom formiranja kljuca za dictionary

[ Pregleda: 2452 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.