logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] VB.net DataGridView przeszukiwanie w celu znalezienia pierwszego wolnego wiersza

pawelus222 22 Wrz 2018 08:31 744 8
REKLAMA
  • #1 17453567
    pawelus222
    Poziom 4  
    Posty: 367
    Ocena: 20
    Witam. Szukam na google i nie mogę znaleźć jak to zrobić. Chodzi mi o następujące rozwiązanie:
    Mam Form1 i Form2. Na Form1 znajduje się TextBox1, TextBox2, TextBox3, TextBox4, TextBox5, TextBox6 oraz Button1. Na Form2 znajduje się DataGridView1 oraz Button2. Teraz chodzi mi o to żeby po wpisaniu danych do sześciu TextBoxow na Form1 kliknąć Button1, następnie przeszukujemy DataGridView1 w celu wyszukania pierwszego pustego wiersza i wstawiamy dane z TextBoxow do niego. Button2 na Form2 służy do pokazania okna (Form3) w którym można wpisać do TextBoxa nr wiersza który chcemy usunąć z DataGridView1. Proszę o pomoc

    Dodano po 14 [minuty]:

    Samo dodawanie danych z TextBoxow do DataGridView1 rozwiązałem w następujący sposób:
    
     Dim n As Integer = Form2.DataGridView1.Rows.Add()
            Form2.DataGridView1.Rows.Item(n).Cells(0).Value = TextBox1.Text
            Form2.DataGridView1.Rows.Item(n).Cells(1).Value = TextBox2.Text
            Form2.DataGridView1.Rows.Item(n).Cells(2).Value = TextBox3.Text
            Form2.DataGridView1.Rows.Item(n).Cells(3).Value = TextBox4.Text
            Form2.DataGridView1.Rows.Item(n).Cells(4).Value = TextBox5.Text
            Form2.DataGridView1.Rows.Item(n).Cells(5).Value = TextBox6.Text
    

    Chodzi teraz jedynie jeszcze że przed dodaniem tych danych był DataGridView1 przeszukiwany w celu znalezienia pierwszego wolnego wiersza i dopiero wtedy zostaną wstawione dane. Proszę o pomoc.
  • REKLAMA
  • #2 17453708
    Dotnetvb
    Poziom 18  
    Posty: 309
    Pomógł: 23
    Ocena: 19
    Nie rozumiem co masz na myśli pisząc pierwszy wolny wiersz, datagridview nie ma czegoś takiego jak wolny wiersz, tylko ma kolekcje rows, aby dodać wiersz używasz rows. Add i masz nowy wiersz. Masz błędne podejście do całości,. Net to nie vba, tylko język obiektowy, zacznij od jakiś tutoriali na yt, poczytaj jakieś książki na temat, a co do itetacji to tak :

    For i =0 to dg.rows.count - 1
    Dim a =dg.rows(i).cells(0).value
    Next


    Ale jak wyżej,. Net to nie vba w Excelu, takie skakanie po kontrolkach jest utopia.
  • #3 17453714
    pawelus222
    Poziom 4  
    Posty: 367
    Ocena: 20
    Czyli w vb.net najlepiej było by TextBoxy przypisać do poszczególnych komórek z DataGridView, a następnie przeszukiwać DataGridView i usuwać puste wiersze jeśli nie był by w nich danych zgadza się?
  • REKLAMA
  • #4 17453734
    Dotnetvb
    Poziom 18  
    Posty: 309
    Pomógł: 23
    Ocena: 19
    Nie,
    Napisać klasy, utworzyć obiekty, do datagridview jako data source wstawić kolekcje tych obiektów, dodawać, modyfikować, usuwać obiekty z kolekcji a nie wiersze z datagridview, kontrolki maja tylko pozwalać na komunikację użytkownika z programem, a nie być przechowalnia danych, poczytaj o programowaniu obiektowym, poświęć godzinę, dwie na zrozumienie w czym rzecz, bo masz w ręku młot udarowy ale używasz go jak młotka 😉

    Dodano po 21 [minuty]:

    Może to Ci troszkę wyjaśni o co mi się rozchodzi
    Załączniki:
    • WindowsApp1.zip (210.66 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #5 17454584
    JacekCz
    Poziom 42  
    Posty: 8670
    Pomógł: 760
    Ocena: 1464
    Popieram @Dotnetvb

    Kontrolki dedykowane do elementów bazodanowych mam być używane z źródłem danych, modelem, który może być zrobiony na kilka sposobów.
    Tutaj pomysł na "ręczne" wypełnianie grida jest kiepski lub wręcz niewykonalny
  • #6 17455218
    pawelus222
    Poziom 4  
    Posty: 367
    Ocena: 20
    Ja nie chcę ręcznie wypełniać Grida tylko za pomocą Button1. Ok z tym już sobie poradziłem. Teraz jest pytanie następujące: dodaliśmy za pomocą button1 pięć nowych wierszy z danymi do Grida, otwieram okno Form2 z Gridem dane są poprawnie wpisane, zamykam Form2 i chcę dodać załóżmy jeszcze dwa wiersze danych do Grida, dodaję dane, przechodzę do Grida a tam są jedynie dwa nowe wiersze z danymi a poprzednie 5 wierszy nie ma. Pytanie nasuwa się następujące, jak zrobić żeby dane w Gridzie były zapamiętane a nie znikały jak w moim przypadku???
  • REKLAMA
  • #7 17455238
    Tomasz_Kn
    Poziom 9  
    Posty: 11
    Ocena: 3
    W jakiej bazie danych zapisujesz te dane które wisujesz.
    Na stronie Microsoftu znalazłem:
    Cytat:
    You can use the DataGridView control to show read-only views of a small amount of data, or you can scale it to show editable views of very large sets of data.

    Czyli jak pisali poprzednicy masz niewłaściwe podejście do tego tematu.

    Pozdrawiam
    Tomasz
  • Pomocny post
    #8 17455291
    Dotnetvb
    Poziom 18  
    Posty: 309
    Pomógł: 23
    Ocena: 19
    Zapisywać dane do bazy danych, przechowywać w pamięci RAM, serializowac do pliku binarnego, XML, tekstowego, innych formatów opcji jest kilka w zależności od potrzeb, lub nie zamykać form2? wtedy przypadkowe zamknięcie, zawieszenie programu powoduje utratę danych, o masakrowaniu pamięci już nie wspomnę.
  • #9 17455298
    pawelus222
    Poziom 4  
    Posty: 367
    Ocena: 20
    Dzięki za pomoc. Zostaje zatem utworzenie pliku np. Excela i tam przechowywanie danych.

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik poszukiwał sposobu na dodawanie danych z sześciu TextBoxów na Form1 do pierwszego pustego wiersza w DataGridView na Form2 po kliknięciu Button1. Po rozwiązaniu problemu z dodawaniem danych, pojawił się nowy problem dotyczący utraty danych w DataGridView po zamknięciu Form2. Uczestnicy dyskusji sugerowali, aby zamiast ręcznego wypełniania DataGridView, używać obiektów jako źródła danych oraz przechowywać dane w bazie danych lub plikach (np. Excel). Podkreślono znaczenie programowania obiektowego oraz trwałego przechowywania danych.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA