edycja poszczegolnej komorki z DataGridViewColumn

0

kolumna Produkt:

private: System::DataGridViewComboBoxColumn^ Produkt;
this->Produkt = (gcnew System::DataGridViewComboBoxColumn());

Jak teraz dostac sie po indexie do poszczegolnej komorki ( czy wiersza jak kto woli) z tej kolumny
tak zebym mogl np dla parzystych wierszy wybierac DefaultStyle ComboBox a dla nieparzystych DefaultStyle Nothing?

0

Poczytaj co moze zawierac definicja kolumny (klasa DataGridViewColumn, na ktorej bazuja pozostale).

a potem poczytaj art

Visual Studio 2005 Technical Articles
Build a Custom NumericUpDown Cell and Column for the DataGridView Control

na podstawie tego juz powinienes zbudowac to co chesz

0

w takim razie czy jest jakis prosty sposob aby wstawiac do DataGridViewComboBox text ktorego owy comboBox nie posiada w itemsach? sprawa wyglada tak ze moj program musi wprowadzic z pliku dane do comboBoxow ale itemy tego comboboxa sa dodawane i usuwane przez uzytkownika wiec np po dodaniu produktu i zapisaniu go do pliku i zakonczeniu programu uzytkonik moze uruchomic znowu program usunac dany produkt poniewaz nie bedzie juz wiecej chcial go wybierac z comboboxa do sprzedarzy i kupna ale istnieje potrzeba by tamten produkt byl jednak dalej wyswietlany w comboboxie czy textboxie i tu jest moj problem ze po usunieciu produktu z itemow wystepuje blad ze chce wczytac z pliku dane ktorych nie ma w itemach mecze sie z tym juz od paru dni wiec prosze o jakies propozycje ;-(

0

To taki problem co ja nazywam miekim kluczem obcym (che che nie krzyczec !). Niby jest relacja a jej nie ma.

Masz problem jesli chodzi o dane, mozesz zrobic to tak. W combo boxie musi byc wszytsko a wiec te ktorych nie chcesz tez. Mozesz dla pozostalych pozycji po prostu ukrywac te elementy, ewentualnie obsluga ondataerror i wtedy dodac tego brakujacego itemsa do comboboxa.

A najlepiej zamknac to w przemyslane do twoich potrzeb kolumny i komorki (klasy obslugujace to dla dgv).

Co znaczy prosty ? Jesli chodzi o dwa klikniecia to nie ma, trzeba przynajmniej splodzic te 10 linijek.

0

prosty sposob to cos da sie wykonac za pomoca kilku kilkunastu instrukcji i nie zajmie to zbyt wiele czasu takim sposobem bylo by tak jak powiedziales ukrywanie itemow mozliwych do wyboru? problem w tym ze chyba nie ma takiej metody proboje to zrobic w ten sposob:
comboBox->Items[1]-> NIE MA VISIBLE :) ;-(
wiec jak ukryc Twoim zdaniem niechciane itemy ( ps. moim zalozeniem bylo skorzystac z ondataerror :)

a twoja druga propozycja na rozwiazanie tego problemu czyli zdefiniowanie nowej komorki i kolumny to zdecydowanie nie jest latwy sposob do rozwiazania tego problemu tym bardziej ze nie bardzo wiem jak cos takiego sie robi zagladalem troche do sampli ale jestem dalej zielony... :/ jesli byscie znalezli jakis tutorial to byl bym wdzieczny (wolal bym zrobic to powyzszym sposobem ale tak sie chyba nie da :P a tutoriale sie i tak przydadza bo chetnie ogarne jak sie robi takie cuda... [green]

0

Tutoriale juz podalem. Ukrywanie wcale nie jest latwe trzeba zdefiniowac swoj combobox (mozna uproscic obudowac orginalny, trzymac gdzies pelna liste z parametrami jest / nie ma i w razie potrzeby dodawac).

Najprosciej (to jeszcze zalezy jak wypelniasz DGV)

  1. Nie dodajesz nic do combo
  2. w dataerror sprawdzac jaka pozycja i usupelniasz comboboxa, wycofujac sie z bledu

druga metoda

  1. definiujesz kolumny z ogolnym typem i potem dodajesz odpowiedni albo combobox albo textbox

tu masz przyklad minimalistyczny definiowania wlasnych kolumn
http://www.onteorasoftware.net/post/DatagridView-ProgressBar-Column.aspx

jesli go nie rozumiesz, oznacza to ze powinienes jeszcze poprogramowac jakies bardzie proste rzeczy

0

skoro ukrywanie itemow rowniez jest bardzo pracochlonne to nie bardzo rozumiem sensu zdania ze zawsze trzeba splodzic chociaz te 10 linijek jesli bym nie chcial pisac to raczej <ort>zajol bym</ort> sie czyms innym chodzilo jedynie o jakis szybki sposob ale skoro takiego nie ma to faktycznie zaglebie sie w tworzenie wlasnych kolumn zreszta na podstawie tego krotkiego przykladu ktory podales zrozumialem juz caly ogol i kolejnosc rzeczy chodzi jedynie o to ze przyklad z msdn jest podzielony na kilka wiekszych plikow i nie do konca wiedzialem co do czego bez zbytniego zaglebiania sie w nie... a za ten ostatni tekst Tobie ort! zeby tez ktos Ci tak napisal "jesli go nie rozumiesz, oznacza to ze powinienes jeszcze poprogramowac jakies bardzie proste rzeczy" albo zeby Ci powiedzial ze skoro jeszcze sie tego nie nauczyles i czegos nie wiesz to to zostaw... moze wtedy zauwazysz jak nieprzyjemna i wlasciwie <ort>nie lubiana</ort> moze sie stac osoba ktora to pisze ...<ort>poza tym</ort> dzieki za pomoc ciezko ja znalezc w Twoich odpowiedziach ale po fatygach da sie
pozdrawiam i zeby nie bylo tak <ort>nie milo</ort> to mimo wszystko dzieki

0
theStonee napisał(a)

... a za ten ostatni tekst Tobie rzycze zeby tez ktos Ci tak napisal "jesli go nie rozumiesz, oznacza to ze powinienes jeszcze poprogramowac jakies bardzie proste rzeczy" albo zeby Ci powiedzial ze skoro jeszcze sie tego nie nauczyles i czegos nie wiesz to to zostaw...

Z takim tekstem spotykam sie co chwila, mowia to ludzie, ktorzy cos zrozumieli i wiedza ile pracy to wymaga, a mowia tak, nie zlosliwie, a dlatego ze nie maja czasu siedziec i tlumaczyc krok po kroku (co zreszta, w moim przypadku, daje mizerne efekty. Czasami wole wywazyc otwarte drzwi, wiecej sie ucze). Czesto lepiej cos zostawic poczytac o czyms innym i znow do tego wrocic.

Metoda zostala podana i sam przyznales ze chcesz isc w tym kierunku (wiec wydalo mi sie, ze juz probowales i stwierdziles ze nie odpowiada tobie):

 private void DataError(object sender, DataGridViewDataErrorEventArgs e)
        {

            //Masz kratke z twoimi danymi
            e.RowIndex
            e.ColumnIndex
            //sprawdzasz czy CB
            //Jesli tak wypelniasz

            //i rezygnujesz z powiadomienia o bledzie            
            e.Cancel

        }

wyjdzie moze 12 linijek ...

0
theStonee napisał(a)

skoro ukrywanie itemow rowniez jest bardzo pracochlonne to nie bardzo rozumiem sensu zdania ze zawsze trzeba splodzic chociaz te 10 linijek jesli bym nie chcial pisac to raczej <ort>zajol bym</ort> sie czyms innym chodzilo jedynie o jakis szybki sposob ale skoro takiego nie ma to faktycznie zaglebie sie w tworzenie wlasnych kolumn zreszta na podstawie tego krotkiego przykladu ktory podales

szybki i prosty - jest: w momencie jak uzytkownik USUNIE element z listy ComboBoxa, musisz odpiac wiersze wyswietlane od tej usunietej wlasnie wartosci (czytaj: WYCZYSCIC albo ustawic na cos innego), albo calkiem te wiersze wywalic z zestawu zrodlowego grida

  • skoro tego czegos na Combo NIE MA BYC, to znaczy ze tych wierszy tez NIE MA BYC, albo ze one tego NIE MAJA MIEC. jesli trzymalbys sie spojnosci Twojej bazy/bazki danych, nie mialbys problemy z Combo..
theStonee napisał(a)

zrozumialem juz caly ogol i kolejnosc rzeczy chodzi jedynie o to ze przyklad z msdn jest podzielony na kilka wiekszych plikow i nie do konca wiedzialem co do czego bez zbytniego zaglebiania sie w nie...

wiesz... bez zaglebiania sie w- to malo co osiagniesz, a i swojego pierwszego HelloWorld do tej pory pewnie bys nie napisal, bo nie wiedzialbys ze potrzeba cos kompilowac/etc..

theStonee napisał(a)

a za ten ostatni tekst Tobie (...)

jesli probujesz zbudowac reaktor jadrowy i masz powazne problemy z zaprogramowaniem klimatyzacji w swoim biurze, to nie jest dziwne ani rażące ze bardziej doswiadczeni 'technicy' przeczuwaja ze z ustawieniem i kalibracja systemu pretow wygaszajacych bedziesz mial koszmarne problemy, nie mowiac juz o tym ze mozesz w ogole nie dac rady, i radza Ci pocwiczyc troche programowanie radia samochodowego albo video zanim wysadzisz pol miasta albo wybijesz glowa dzire w scianie..

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