Avatar
Franc Beran
Člen
Avatar
Franc Beran:

Zdravím a obracím se na vás. Mám dva comboboxy cmbBooks a cmbChapters ve WPF.
Dále mám SQL databázi BookListDB s tabulkami Books a Chapters.
IDBook PK v tbl Books je v relaci s BookID FK v tbl Chapters. Takže SQL dotazem zjistím, které kapitoly patří ke které knize.
Mám funkci getBooksList, která naplní List BookList seznamem všech knih
a funkci getChapterList, která naplní List ChapterList příslušnými kapitolami náležející k vybrané knize.
Pak jsem přiřadil cmbBooks .ItemsSource = BookList ;
cmbChapters .ItemsSource = ChapterList ;
Mám záměr vybrat v cmbBooks knihu a ta slouží jako parametr ve funkci *getChapterList, čili po rozkliknutí *cmbChapters bych měl vidět příslušné kapitoly a pak výběrem příslušné kapitoly vyvolávám další funkcí dotaz na s kapitolou souvisící tabulku, kterou pak v jiné databázi otevírám, což je cílem, dál už vím, co s tím. Ale dělám nějakou chybu a nefunguje ta chtěná provázanost comboboxů, dotazy, co mi plní BookList i ChapterList mi fungují. Neví někdo z vás jak to provázat.

 
Odpovědět 22.11.2015 19:40
Avatar
Odpovídá na Franc Beran
Michal Štěpánek:

Musíš pustit to naplnění druhého ComboBoxu v události SelectedItem toho prvního

Nahoru Odpovědět 23.11.2015 7:49
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Franc Beran
Člen
Avatar
Odpovídá na Michal Štěpánek
Franc Beran:

Již jsem na to přišel, posílám ten problémový kousek, jinak děkuji za odpověď.

private void cmbDB_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var cmbDB = sender as ComboBox;
    dbName = cmbDB.SelectedItem as string;
    cmbChap.ItemsSource = null;     // bez této řádky tam panovala nemohoucnost
    getChapterList(BookListString, dbName);
    cmbChap.Text = dbName;
}

private void cmbChap_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var cmbChap = sender as ComboBox;
    chapterName = cmbChap.SelectedItem as string;
    tbxChapName.Text = chapterName;
    tblName = GetTblName(conn, dbName, chapterName);
}
 
Nahoru Odpovědět 23.11.2015 9:31
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 3 zpráv z 3.