tabControl a comboBox   otázka

VB.NET, WinForms

Ahoj, narazil jsem na jednu věc u které si sice dokážu poradit, ale nepříjde mi to elegantní.

Na formuláři mám tabControl se 4 tabPage. Na 1 a 3 tabPage mám combobox kam se po spuštění natáhnout hodnoty z SQL serveru. Dole na formuláři mám status labely kde je vždy napsaný text který je aktuálně v comboboxech vybraný (také hned po spuštění).

Text z prvního comboboxu který je na tabPage1 je zobrazí správně ale místo textu z comba které je na 3 tabpage se mi napíše system.Data.DataRowView (data zobrazuji pomocí frmAplikace.comboStavUzivatele.Text). Pokud se přepnu na 3 tabPage a pak zase zpátky na první text se už zobrazí správně. Napadlo mě kodem postupně popřepínat všechny tabPage a vrátit se na první ale to není moc elegantní.

Doufám že se mi podařilo vymáčknout něják srozumitelně:)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Myslím že to vyřeší funkce refresh() volaná tabControlem. Jinak podle textu chápu, že se text nastavuje při výběru textu v comboboxu. Problém by nejspíše vyřešilo nastavovat text při přepínání tabPages a volit konkrétní combobox.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak refresh mi bohužel nepomohl. Zkoušel jsem refreshnout celý formulář,tab control,konkrétní tabPage i comboBox a výsledek nulový. Takže jsem to prozatím vyřešil tak, že když skončí všechny procedury které načítají data do comboboxů zjistím si kódem počet tabPage, všechny je postupně popřepínám a vrátím se na první. Sice to je asi trošku prasečinka ale na nic lepšího jsem prozatím nepřišl.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A nemá ta komponenta nějakou metodu DataBind nebo něco, aby si ty data natáhla? Jako nevím, jen hádám, ale něco takového by tam být mohlo. Zkuste hledat něco, co obsahuje slovo Fetch, Load, Update nebo Refresh, přepínat tabpages určitě není jediné možné řešení.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No data v comboboxu jsou. Načítám je tam kódem který se spustí při otevření aplikace (tzn. není to automaticky vygenerovaný kód).Když se na tu tabPage přepnu všechny data tam jsou. Ale když se po spuštění aplikace například snažím z tabPage1 do msgboxu načíst aktuálně zobrazený záznam z comba který je na tabPage3 bez toho abych je postupně popřepínal, hází mi to výše uvedený text. Teď mě jen napadlo zda po načtení dat je automaticky "vybrán" první záznam v combu nebo jestli ten můj problém neznačí to, že se první záznam vybere (zobrazi) až po přepnutí na danou tabPage.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak mi to nedalo a hledal jsem, popsaný problém je na této stránce: http://support.microsoft.com/default.asp...

Pokud to chápu správně, tak když je ComboBox na tabPage, která není vidět, má hodnotu Visible nastavenou na False. Když není combo viditelné, tak se do něj data prostě nenabindují. Při změně vlastnosti Visible (při přepnutí TabPage) se vlastnost Visible nastaví na True a data se natáhnou až potom (zavolá se událost OnBindingContextChanged). Takže je nutné ComboBoxům asi nastavit Visible na True, nabindovat je, a pak je zase schovat. Anebo je nejdřív naplnit a pak je kódem plácnout do toho TabControlu, což ale není zrovna ideální. Nejlepší by asi bylo podědit si ComboBox a tohle chování si změnit, ale to by asi bylo dost složité.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback