Datagrid - wypełnianie combobox'ów

0

Witam.

Zrobiłem sobie tabele a w niej mam dwie kolumny Elemnt i Srednica.
Każdy Element w "Elemnst" może mieć i ma rózne średnice "OD".

teraz chce mieć w datagrid coś takiego:

Klikam na komurkę w pierwszej kolunie
Rozwija mi się combobox pokazujące mi wszystkie rodzaje elementow z "Elements".
Wybieram sobie elemnt.
klikam w komórke w kolumnie 2.
Rozwija mi sie comboboks z wszystkimi srednicami jakie wczesniej wybrany element moze mieć wg tabeli.

To samo dla następnego pustego wiersza...

Nie ma zielonego pojęcia jak się do tego zabrać. nie mam doświadczenia z sql w visual studio ani nigdzie indziej. Było by miło jakby mi ktoś ten przykład wyjaśnił łopatologicznie na przykładzie gotowego kodu. Albo podał kod moze sam go zrozumiem.

Pozdrawiam

Michał.

0

napisze w gwiazdkach by Cie nie obrazac: ***** *** *************** ?
po co zakladasz 2x ten sam temat w 2 roznych dzialach ?:>

uzyj google, tak ciezko ?:> ... a zreszta masz linka: http://lmgtfy.com/?q=cascading+dropdownlist

0

Jaaacie google. Nie wpadłbym na to nigdy....

napisze ci w gwiazdkach zeby cie nie obrazać nie oczywiscie ze uzywałem google i nic w tym stylu nie znalazłem. uzywałem tez msdn i tego konkretnie zastosowania tez nie znalazlem. a wiec od****** sie.

0

no najwidoczniej nie wpadles by wpisac w google, bo bys znalazl prawda?

Nerwy mnie poniosly nie na twoje pytanie, tylko na to ze 2x napisales to samo w dziale newbie i tutaj, co jest przejawem glupoty.

0

Głupota to chyba Twoje drugie imię. Napisałem w dwóch działach bo nie podejrzewam. żeby każdy użytkownik sprawdzał codziennie czy czaseem też nie napisałem nowego posta. Naprawde w to wątpie. więc jak dam ten sam post do dwóch działó przwdopodobieństwo jego przeczytania znacznie wzrasta.

poza tym, wyniki od "cascade dropdown list" odnoszą się do dwóch comboboksów umieszczanych na stronkach internetowych. Normalnie wiem jak zrobic dwa zależne od siebie komboboksy. (zdarzenie selectedItemChanged i Switch (combobox.selectedindex) {})

ale w tym wypadku nie wiem jak to ugryść popierwzsze ze względy na to że jest to datagrid. i dane są wczytywane z tabeli.

A na przyszłośc to niech cie nie ponosi bo wyjdziesz na prostaka i chama.

0

poza tym co ty moerator jesteś? Co cie to obchodzi w ilu działach piszę?

0

a obchodzi bo jakos takos wyszlo ze lubie te forum i lubie tu zagladac, wiec jak widze takich 'inteligentófff' to sie wkurzam.

0

"ojejku! dał dwa takie same posty! o mamusiu chyba już tu nie bede zaglądał...a takie ajne forum było... ojej. chyba sie znowu zmoczę w nocy..."

Że niby tak sobie myslałeś?

0

To forum jest gówniane dzięki taki jak HideYoshi

0

proste, 3 tabele,

pierwsza - dla grida, ma pola min id_elementu, oraz id_srednicy
druga - dla elementow, ma pola id, oraz nazwa_elementu
trzecia - dla srednic, ma pola id, oraz nazwa_srednicy

grida:
datasource: tabelanr1

pole1 - id_elementu
zmieniasz w edytorze typ pola (ColumType) na combobox (DataGridViewComboBoxColumn)
jak to zmienisz, to wyzej - nad typem pola - zmienią Ci sie pola ktore mozesz uzupelnic, jest tam min DataSource,
wybierasz w nim tabele nr 2 - tabele dla elementów, następnie w tym samym oknie, poniżej, masz "DisplayMember" ustawiasz na nazwa_elementu, "ValueMember" ustawiasz na Id elementu

pole2 - id_srednicy
robisz analogicznie, czyli:
zmieniasz w edytorze typ pola (ColumType) na combobox (DataGridViewComboBoxColumn)
jak to zmienisz, to wyżej - nad typem pola - zmienią Ci sie pola które możesz uzupełnić, jest tam min DataSource,
wybierasz w nim tabele nr 3 - tabele dla średnic, następnie w tym samym oknie, poniżej, masz "DisplayMember" ustawiasz na nazwa_srednicy, "ValueMember" ustawiasz na Id srednicy

klepiesz okej, okej, i powinno chulac, oczywiście to są moje wymyślone pola, ale mam nadzieje ze skumałeś, to, czy będziesz mógł dodawać rekordy, jest uzależnione jeszcze od paru rzeczy, także to czy to pole combobox będzie tylko lista rozwijaną, czy też listą rozwijaną z możliwością uzupełnień jest kwestią do ustalenia...

powodzenia

0

Lardux

Dzięki. Troche już zakumalem ja to działa.

Chcialbym tylko dopracowac jedną rzecz.

Tablica elemnty zawiera tylko dwa elementy: "Rura' i "otwór"

W tabeli "srednice" mam zbiór powiedzmy 10 różnych średnic. 6 z nich jest właściwa tylko dla elemntu "rura" a 4 tylko dla elementu "otwór".

i teraz jak wybieram w gridzie w pierwszej kolumnie "rura" to chciałbym mieć w drugiej kolumnie tylko te 6 właściwych a nie wszystkie tak jak mam teraz.

Jak do tego dojść?

Pozdrawiam

Michał

0

mówisz ze tablica elementy ma tylko dwa rekordy, czyli wygląda to mniej więcej tak
1 - Rura
2 - Otwór

dorzuć do tablicy średnic pole typ, określające czego tyczy się dana średnica, dla średnic rur przypisz temu polu wartość 1, dla średnic otworów - przypisz wartość 2

dalej, dostaw na formatkę element DataView - często jest on niewidoczny, wiec zrób na ToolBoxie "Choose Items..." i poszukaj go w spisie komponentów, jak już go będziesz miał, to musisz trochę rzeczy przestawić.... mianowicie:
dataview które postawiłeś na formatce, ma właściwość "Table" - musisz je ustawić na tabele trzecia - czyli tabele do średnic, następnie w obiekcie datagrid, musisz zmienic komórkę z comboboxem od średnic, tak, aby nie wskazywała bezpośrednio na tabele 3, która zawiera średnice, ale na to nowe dataview...

ostatnim krokiem jest podpięcie się pod CellClick obiektu datagridview, wpisz w nim taki kod

            if (e.RowIndex > 0)
            {
                if (e.ColumnIndex > 0)
                {
                     DataView1.RowFilter="typ="+dataGridView1.Rows[e.RowIndex].Cells["nazwa_combo_boxa_z_elementami"].Value.ToString();
                }
            }

kod ten oczywiście musisz przeczytać i zrozumieć, bo inaczej nie zadziała :)

idea jest taka, ze koleś jak kliknie na jakiejkolwiek komórce (możesz dopisac if'a który sprawdzi czy kliknięta komórka jest komórka z średnicami), to wykona się kod, ktory sprawdzi wartość w comboboxie z elementami, następnie przefiltruje w dataview elementy na takie które zgadzają się (wartość typ = id_elementu) i przefiltrowane dane zapoda do drugiego comboboxa - z średnicami, który wyświetli już przefiltrowane dane

zaznaczam ze ten powyższy kod, jak i cały algorytm nie jest przetestowany i może nie działać...

a tak na przyszłość, pobaw się z obiektami dostępnymi w VS, bo tak na prawdę to wychodzi nie znajomość komponentów, gdybyś wiedział że jest takie coś jak DataView, które posiada RowFilter, to byś sobie poradził...

powodzenia

0

Lardux,

działa pod warunkiem, że:

if (e.RowIndex >= 0)
0

e.rowindex=0 oznacza ze zostal klikniety naglowek (czyli tam gdzie wszystkie kolumny mają swoje nazwy) moim zdaniem powinno dzialac z > ale skoro mowisz ze potrzebny jest >= to pewnie tak jest

1 użytkowników online, w tym zalogowanych: 0, gości: 1