• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Windows Form DataGridView C#

Object Storage Arubacloud
0 głosów
98 wizyt
pytanie zadane 3 października 2023 w C# przez Gniewomir Nowicjusz (120 p.)

Witam z tej strony początkujący programista C#. Na to forum natknąłem się kiedyś przy pierwszych korkach C++.

Myślę że ogarnąłem już podstawy podstaw i kieruje swój rozwój na aplikacje okienkowe. 

Mam następujący problem i pytanie zarazem. Mam plik csv, który importuje do programu i zaczytuje go poprzez BingidListy. Oczywiście przypisałem komponent DataGridView do mojej listy. Napisałem odpowiedni kod i odczyt zapis działa. Program wczytuje zawartość csv oraz dodaje nowe rekordy. Kolejnym problemem jaki mam do rozwiązania i zrozumienia jest filtrowanie treści jaki przechowuje csv i wyświetlenie jej w komponencie DataGridView. 

Poniżej mój kod, który stworzyłem ale nie działa, po wielu próbach nie mogę jakoś sobie poradzić. Ba nawet zszedłem do Consoli by na szybko sprawdzić czy czegoś źle nie robię. Z góry przepraszam za pewne nazwy takie zobaczenie jak coś nie działa to jest to .... :(

 

        private void button1_wyszukaj_Click(object sender, EventArgs e)
        {

            if (File.Exists(plik))
            {
                using var reader = new StreamReader(plik);
                using var csv_reader = new CsvReader(reader, CultureInfo.InvariantCulture);
                var dane = csv_reader.GetRecords<Dane>().ToList();

                separacja(dane);
            }

        }
        private void separacja(List<Dane> dane)
        {
            dupa.Clear();

            foreach (var element in dane)
            {
                dupa.Where(o => o.imie.Contains("AXE"));
            }
                                     
        }



 

komentarz 3 października 2023 przez VBService Ekspert (253,420 p.)
edycja 3 października 2023 przez VBService

Z zaprezentowanego kodu wnioskuję, że próbujesz filtrowania po imieniu. Możesz udostępnić Twój plik przykładowy csv?

Pierwsza uwaga, masz w nazwie button1_wyszukaj a kod wczytuje dane z pliku dobrze by było to odseparować np. cos w tym stylu (kod poglądowy pisałem z głowy)

private void button_filterByName_Click(object sender, EventArgs e)
{
    var dane = loadDataFromCSV();
    dupa.Clear();
 
    foreach (var element in dane)
    {
        if (element.imie.Contains("AXE"))
        {
            dupa.Add(element);
        }
    }
}

private List<Dane> loadDataFromCSV()
{
    List<Dane> dane = new List<Dane>();

    try
    {
        using (var reader = new StreamReader(plik))
        using (var csv_reader = new CsvReader(reader, new CsvConfiguration(CultureInfo.InvariantCulture)))
        {
            dane = csv_reader.GetRecords<Dane>().ToList();
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("Wystąpił błąd podczas wczytywania pliku CSV: " + ex.Message, "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }

    return dane;
}

 

komentarz 4 października 2023 przez Gniewomir Nowicjusz (120 p.)
edycja 4 października 2023 przez Gniewomir

Tak oczywiście jednak musze uprzedzić nazwa zmiennej "imie" jest myląca, zmienna ta odpowiada nazwie przedmiotów. Z początku zależało mi na wprowadzaniu jakiś informacji do programu potem ich zapisanie, a przy ponownym uruchomieniu programu odczyt. Gdy spełniłem moje założenie postanowiłem nauczyć się filtrowania do tego pobrałem listę przedmiotów z jakiejś gry tak aby było dużo rekordów. 

Przepraszam za moje podejście i nie ze edytowanie wszystkiego do właściwej formy. Jednak jak wspomniałem traktuje tworzenie tych aplikacji jako naukę i co mi przyjdzie do głowy staram się realizować. 

 

ImiedlaTestu
Sickle
Ornate Carving Chopper
Ornate Mayhem Chopper
Ornate Remedy Chopper
Plain Carving Chopper
Plain Mayhem Chopper
Plain Remedy Chopper
Valuable Carving Chopper
Valuable Mayhem Chopper
Valuable Remedy Chopper
Earth War Axe Replica
Energy War Axe Replica
Fiery War Axe Replica
Icy War Axe Replica
Earth Heroic Axe Replica
Energy Heroic Axe Replica
Fiery Heroic Axe Replica
Icy Heroic Axe Replica
Earth Knight Axe Replica
Energy Knight Axe Replica
Fiery Knight Axe Replica
Icy Knight Axe Replica
Earth Barbaric Axe Replica
Energy Axe Replica
Fiery Barbarian Axe Replica
Icy Barbarian Axe Replica
Ornate Carving Axe
Ornate Mayhem Axe
Ornate Remedy Axe
Plain Carving Axe
Plain Mayhem Axe
Plain Remedy Axe
Valuable Carving Axe
Valuable Mayhem Axe
Valuable Remedy Axe
Earth Headchopper Replica
Energy Headchopper Replica
Fiery Headchopper Replica
Icy Headchopper Replica
Phantasmal Axe

Rekordów jest dużo więcej.

 

EDIT :
Przeanalizowałem Twój kod dziękuje za poświęcony czas bo dzięki Twojej odpowiedzi otworzyły mi się kolejne drzwi, zrozumiałem kolejną rzecz. Niestety jednak nadal nie działa. 

Tzn. następuje wyczyszczenie datagridview i nie wyskakuje msgbox o błędzie. Coś musi być nie tak z plikiem csv lub formą przechowywania w niej rekordów.

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 276 wizyt
pytanie zadane 7 kwietnia 2022 w C# przez Kubax Początkujący (430 p.)
+1 głos
1 odpowiedź 356 wizyt
pytanie zadane 18 kwietnia 2021 w C# przez Mich4l Nowicjusz (160 p.)
0 głosów
0 odpowiedzi 106 wizyt
pytanie zadane 28 kwietnia 2018 w C# przez PięćCzySześć Użytkownik (770 p.)

92,584 zapytań

141,434 odpowiedzi

319,671 komentarzy

61,968 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...