Czy da się wyciągnąć numer porządkowy zaznaczonego elementu w combobox-ie?
private ComboBox cars = new ComboBox();
number.Items.Add("bmw");
number.Items.Add("taxi");
//(...)
Czy da się wyciągnąć numer porządkowy zaznaczonego elementu w combobox-ie?
private ComboBox cars = new ComboBox();
number.Items.Add("bmw");
number.Items.Add("taxi");
//(...)
CombobBox.SelectedIndex
zły?
Ano zły, bo mi zależy na odnalezieniu konkretnego elementu, nawet jeśli jego reprezentacja w combobox jest identyczna jak dla kilku innych. Przykładowo mamy:
number.Items.Add("one");
number.Items.Add("two");
number.Items.Add("one");
```
Korzystając z
if(numbers.SelectedItem.ToString() == "one"){};
```
nie jesteśmy w stanie odróżnić, który faktycznie element został wskazany.
Przykład może wydawać się absurdalny, ale ma jasne przełożenie na rzeczywistość. Wystarczy założyć, że wartości prezentowane w combobox są popierane z puli obiektów. W takie sytuacji możemy nie mieć zapewnionej unikalności i metoda zwrócić wskazanie do niepoprawnego elementu. Ktoś wie jak rozwiązać taki problem?
To ja już nic nie rozumiem.
Są właściwości:
Jeśli obiekty są pobrane z bazy (np. klasa Student z właściwościami NrAlbumu i Nazwisko), to trzeba użyć bindowania, jako DisplayMember ustawić Nazwisko, a jako ValueMember: NrAlbumu i w celu pobrania rzeczywistej identyfikatora odwołać się przez SelectedValue - zadziała nawet dla dwóch Kowalskich na liście.
Mam problem z comboboxem. Wczytuję do niego dane z tabeli. Podpinam DataSource, DisplayMember oraz ValueMember w którym zapisuję Id z bazy.
Chcę zapisać do zmiennej DokumentId typu int wartość zaznaczonego elementu w cb.
Robię to tak:
DokumentId = (int)cb.SelectedValue; i w momencie odczytu z cb otrzymuję błąd" Określone rzutowanie jest nieprawidłowe.
gdy robię tak:
DokumentId = Convert.ToInt32(cb.SelectedValue); to wywala Nie można rzutować obiektu typu System.DataRowView na typ System.IConvertible
a gdy zrobię tak
label.Text = cb.SelectedValue.ToString(); to wszystko ładnie działa.