Vajíčková mánie Vajíčková mánie
Probíhá výprodej HTML, JavaScript a Bootstrap. Slevy až 80 %
Vyšlehej si extra vědomosti! Až 100% bodů na prémiový obsah zdarma! Více zde

Diskuze: ComboBox miznutie vyberu

Aktivity (4)
Avatar
Patrik Živčák:14. ledna 16:15

Mizne mi vyber v comboboxe pričom tie možnosti tam asi aj su lebo su tam 3 položky ako aj maju byť ale nevidno ich. Robim s 2 comboboxami pričom obsah druheho je zavisli na volbe toho prveho. Niektore su pritom vyselectovane s DB a niektore su pridané ručne.

Zkusil jsem: comboBox2.Item­sSource = null;

Resp. som použil:
Dictionary<string, object> Items = new Dictionary<string, object>();
comboBox2.Item­sSource = null;
Items.Add("1", "2019 - 2015");
Items.Add("2", "2014 - 2010");
Items.Add("3", "2010 a menej");

comboBox2.Item­sSource = Items;
comboBox2.Selec­tedValuePath = "Key";
comboBox2.Dis­playMemberPath = "Value";
A ide to problém je pri prepnutí na predošle možnosti to ten druhy combobox je zas "prázdny"

Chci docílit: Aby to šlo pri opakovanom zvolení, ktorejkolvek možnosti bez toho aby sa druhy combobox javil ako prazdny.

Cely kod: https://www.itnetwork.cz/…lighter/1140

Editováno 14. ledna 16:16
 
Odpovědět 14. ledna 16:15
Avatar

Člen
Avatar
:17. ledna 10:03

Dovolím si odhadnout zcela bez prostudování detailů, jen na základě osobní zkušenosti, že problém je v tom, že máte Items jako slovník typu řetězec , objekt. Objekt ve výchozím "stringovém" podání neukáže ze sebe nic. Dejte dictionary typu string, string, anebo musíte použít na object.ToString konverzi.

 
Nahoru Odpovědět 17. ledna 10:03
Avatar

Člen
Avatar
:17. ledna 11:59

No tak jsem kecal :). Dobrá zkusím druhý tip. Datacontext, tam hledejte. Při vypisování položek z Item slovníku může být ještě nastaven na ouplně něco jinýho, a není nulován?
Obecně bych doporučoval používat jen jednu kolekci napevno a tu plnit daty dle potřeby (nejlépe observable). Tohle přepínání mezi různými políčky různých sad dat, zdrojů a pod. není moc dobré.

Zkuste si taky stáhnout utilitku Snoop, co umí zobrazovat v reálném čase obsah čehokoliv v celé Vaší WPF aplikaci (Visual Studio to umí už taky -> Live Visual Tree -> Live Property Explorer). A koukněte co tam vlastně máme v tu chvíli, kdy Vám to zmizí, za data.

Chybí mi tu, jak to máte v XAML.

Editováno 17. ledna 12:00
 
Nahoru Odpovědět 17. ledna 11:59
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:18. ledna 8:24

Se asp c# nepracuji, ale co treba uvozovky kolem stringu?

comboBox.SelectedValue == rokVydania
comboBox.SelectedValue == "rokVydania"

Pripadne zrovna si tam dej do toho ifu, ze se ma vypsat do nejakeho textboxu nebo logu, ze jsi uvnitr ifu

if (comboBox.SelectedValue == rokVydania)
            {
echo "comboBox.SelectedValue == rokVydania == TRUE"; // v php
            }
Editováno 18. ledna 8:26
 
Nahoru Odpovědět 18. ledna 8:24
Avatar
Odpovídá na Peter Mlich
Michal Štěpánek:18. ledna 9:22

Tady bych řekl, že ty uvozovky být nemají, podle mě by to měla být proměnná. Nicméně v tom kódu jsem nikde nenašel její deklaraci, či hodnotu...

Nahoru Odpovědět 18. ledna 9:22
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Patrik Živčák:18. ledna 12:00

tu je xaml: tu

 
Nahoru Odpovědět 18. ledna 12:00
Avatar

Člen
Avatar
:18. ledna 13:02

...zase od boku, jen jsem mrknul na to XAML. A je jisté, že <ComboBoxItem x:Name="rokVydania" Content="Roku vydania"/> funguje v kódu comboBox.Selec­tedValue == rokVydania ? rokVydania jako ComboBoxItem nemusí vracet Content ale úplně něco jinýho, nebo to máte odzkoušené? Nemělo by bejt spíš comboBox.Selec­tedValue == rokVydania.Name ? Defaultně totiž asi vrací .Content.

 
Nahoru Odpovědět 18. ledna 13:02
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:18. ledna 13:21

Michal Štěpánek - presne, nenasel jsem definici.
V JS bych to napsal

sel1   = form['ComboBox']; // (xaml) ComboBox x:Name="comboBox"
value1 = sel1.options[sel1.selectedIndex]
if (value1=='rokVydania') {...} // (xaml)   <ComboBoxItem x:Name="rokVydania" Content="Roku vydania"/>

Cili, podle xamlu jsem to asi tipnul spravne, "rokVydania" je value optionu. Ale ASP fakt nedelam :)
Jakoze, on chce, kdyz v selectu1 zvolu hodnotu, aby se prepsaly hodnoty ve druhem selectu. Takze, logicky bych porovnaval value prvniho.

Editováno 18. ledna 13:23
 
Nahoru Odpovědět 18. ledna 13:21
Avatar
Patrik Živčák:18. ledna 13:49

comboBox.Selec­tedValue == rokVydania bez problemu funguje

 
Nahoru Odpovědět 18. ledna 13:49
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Patrik Živčák
Peter Mlich:18. ledna 15:59

Funguje jako, ze kdyz dovnitr podminky dal print nebo logovani nebo aby se neco zobrazilo na obrazovku?
Nebo funguje, jakoze to prekladac zkousl? Pro prekladac je to samozrejme ok. prom1==prom2. Ale, podle mne, by to melo delat neco jineho, nez chces ty.
Muzu se mylit, rikam, s asp nedelam. Jenom mi to prijde divne, z celeho toho kodu :) Ten zbytek, uvnitr ifu vypada funkcne.

Editováno 18. ledna 16:00
 
Nahoru Odpovědět 18. ledna 15:59
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:18. ledna 16:03

Trochu jsem googloval a tam pouzivaji toto

List<ComboData> ListData = new List<ComboData>();
ListData.Add(new ComboData { Id = "1", Value = "One" });
ListData.Add(new ComboData { Id = "2", Value = "Two" });
ListData.Add(new ComboData { Id = "3", Value = "Three" });
ListData.Add(new ComboData { Id = "4", Value = "Four" });
ListData.Add(new ComboData { Id = "5", Value = "Five" });

cbotest.ItemsSource = ListData;
cbotest.DisplayMemberPath = "Value";
cbotest.SelectedValuePath = "Id";
 
Nahoru Odpovědět 18. ledna 16:03
Avatar
Patrik Živčák:19. ledna 12:23

dik už je to jedno ja programatorom asi nikdy nebudem to sa proste neda naučiť

Editováno 19. ledna 12:23
 
Nahoru Odpovědět 19. ledna 12:23
Avatar
Odpovídá na Patrik Živčák
Michal Štěpánek:20. ledna 9:50

Nebuď pesimista. Nemusíš být profesionálním programátorem, ale programovat se naučit můžeš. Stačí mít nějakou motivaci. Vymysli si nějaký prográmek, který by ti mohl být k něčemu užitečný a pak to programování, resp. učení půjde mnohem lépe...

Nahoru Odpovědět  +1 20. ledna 9:50
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.