|
Programiranje Java, Perl, VB, ASP, .NET, C, C++, Pascal, Delphi Sponzor: |
|
Alati teme | Način prikaza |
|
06. 04. 2013. | #1 |
Dejan Katašić
Wrote a book
Datum učlanjenja: 10.06.2005
Lokacija: Novi Sad
Poruke: 1.017
Hvala: 129
86 "Hvala" u 43 poruka
|
Znači da je comboBox vezan opet za neki drugi DataSet (ili slično) sa svim ili nekim korisnicima. Tako on ne sadrži kolekciju stringova već nekih (meni nepoznatih) objekata.
Ako tako pokušamo da tražimo IndexOf sa stringom, dobićemo uvek -1 za SelectedIndex... Što će kasti da smo selektovali ništa. Ideja - prođeš kroz kolekciju comboBoxa i nađeš objekat koji ima odgovarajući UserName... pa njega proslediš kao parametar u IndexOf i ima da radi. Trebalo bi da bude nešto slično sledećem: Kôd:
public void SetUser(string userName) { IEnumerator enumerator = comboBox1.Items.GetEnumerator(); while ( enumerator.MoveNext() && ((MyType)enumerator.Current).UserName != userName ) { }//prazna petlja, MoveNext radi sve potrebno try { comboBox1.SelectedIndex = comboBox1 .Items .IndexOf((MyType)enumerator.Current); } catch (InvalidOperationException e) { MessageBox.Show("Eh, nije postavljeno, evo poruke: " + e.Message); } } |
"Hvala" noviKorisnik za poruku: |
08. 04. 2013. | #2 |
član
Certified
|
Ovo je metoda kojom punim comboBox:
Kôd:
private void puniKombo() { comboBox1.DataSource = lds.Users;//lds je data set a Users je tabela. comboBox1.ValueMember = "UserName"; comboBox1.DisplayMember = "UserName"; } Ukoliko umesto MyType (ako sam dobro razumeo) ubacim puniKombo(), izlazi mi poruka "Operator && cannot be applied to operands of type bool and void". A .UserName nisam bas najbolje skapirao, da li treba da to bude polje u kome se unosi korisnicko ime (txtUserName na Login prozoru) ili nesto drugo?
__________________
tO sAm jA i Tu jE ProBleM, sIlOm NeĆu Da sE mEnJam... |
08. 04. 2013. | #3 |
Dejan Katašić
Wrote a book
Datum učlanjenja: 10.06.2005
Lokacija: Novi Sad
Poruke: 1.017
Hvala: 129
86 "Hvala" u 43 poruka
|
Kada kažemo enumerator.Current tada znamo da se tu nalazi objekt. Ako želimo nešto dodatno da radimo sa tim objektom moramo da javimo kog je tipa da bi mogli da koristimo njegova svojstva. Zato je navedeno (MyType)enumerator.Current
A umesto MyType... svakako ne poziv metode za punjenje, već tip podataka kojom je napunjena kolekcija komba. DataSet ima Tables kolekciju tabela. Tabela Users je tipa DataTable, i opet ima kolekciju Rows, gde su elementi tipa DataRow... Ako sam dobro ispratio, umesto MyType treba da ide DataRow. A polju pristupamo preko indeksa naziva kolone, jel, ovako: Kôd:
((DataRow)enumerator.Current)["UserName"] |
10. 04. 2013. | #4 |
član
Certified
|
I dalje imam problem!
Uradio sam kako si mi rekao: Kôd:
IEnumerator enumerator = comboBox1.Items.GetEnumerator(); while ( enumerator.MoveNext() && ((DataRow)enumerator.Current)["UserName"] != userName ) { } try { comboBox1.SelectedIndex = comboBox1.Items.IndexOf((DataRow)enumerator.Current); } catch (InvalidOperationException e) { MessageBox.Show("Greska" +" "+ e.Message); } Potom mi otvori sledeci prozor (Form1) ali i dalje ne selektuje zadati index u comboBox-u. Takodje, izlazi mi valjda "attention" podvucen zelenom bojom kod koda Kôd:
enumerator.MoveNext() && ((DataRow)enumerator.Current)["UserName"] != userName Probao sam da dodam ToString(): Kôd:
enumerator.MoveNext() && ((DataRow)enumerator.Current)["UserName"].ToString() != userName Imas li neki predlog? Unapred hvala.
__________________
tO sAm jA i Tu jE ProBleM, sIlOm NeĆu Da sE mEnJam... |
|
|