DataGridView - brak wyswietlania danych z tabeli

0

Witam mam problem stworzylem klase osoba nastepnie wpisalem do arraylist kilka obiektow tej klasy i wpisalem do tabeli teraz chce z tabeli przeniesc na interface graficzny do dataGridView ale tu problem;/
wyswietla mi sie pusta tabela liczba wierszy jest poprawna bo dadaje 3 ale wszystkie sa puste;/ jak ktos wie jak to ruszyc to bylo by fajnie ;-P aha i z gory mowie ze nie chce wypelniac dataGridView za pomoca indeksowania np. dataGridView1.Rows[0].Cells[2].Value = "blabla";

z gory dzieki i pozdrawiam:)

klasa osoba

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _2222222222222
{
    [Serializable]
    class Osoba
    {
        public string imie;
        public string nazwisko;
        public string wiek;

        

        public Osoba(string i, string n, string wiek)
        {
            imie = i;
            nazwisko = n;
            wiek = wiek;
        }
    }
}

Form1

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace _2222222222222
{
    public partial class Form1 : Form
    {
        

        private ArrayList arList = null;

        public Form1()
        {
            InitializeComponent();
            CenterToScreen();

            arList = new ArrayList();

            arList.Add(new Osoba("a", "a", "a"));
            arList.Add(new Osoba("b", "b", "b"));
            arList.Add(new Osoba("c", "c", "c"));

            

            UpdateGrid();
        }

       

        private void UpdateGrid()
        {
            if (arList != null)
            {
                DataTable tabela = new DataTable("Tabela");

                DataColumn Imie = new DataColumn("Imie");
                DataColumn Nazwisko = new DataColumn("Nazwisko");
                DataColumn Wiek = new DataColumn("Wiek");

                tabela.Columns.Add(Imie);
                tabela.Columns.Add(Nazwisko);
                tabela.Columns.Add(Wiek);

                foreach (Osoba o in arList)
                {
                    DataRow r;
                    r = tabela.NewRow();

                    r["Imie"] = o.imie;
                    r["Nazwisko"] = o.nazwisko;
                    r["Wiek"] = o.wiek;

                    tabela.Rows.Add(r);

                }

                dataGridView1.DataSource = tabela;

              
                
               
            }
            

        }
    }
}
0

hmm przypisz ręcznie wartości do tabeli i zobacz co z tego wyjdzie, czyli:

                foreach (Osoba o in arList)
                {
                    DataRow r;
                    r = tabela.NewRow();

                    r["Imie"] = "aaa";
                    r["Nazwisko"] = "bbb";
                    r["Wiek"] = "ccc";

                    tabela.Rows.Add(r);

                }
0

tez puste;/

0

a ustaw własciwość dataGridView1.AutoGenerateColumns = true; przed powiazaniem tabeli z kontrolką
Domyśle tak powinno być ale się zachowuje jak by było na false hmmmm

0

[rotfl] :d pojawily sie dodatkowe 3 kolumny wypelnione [browar] tylko jeszcze czemu pojawily sie trzy nowe ?;/ wyglada to tak

imie nazwisko wiek imie nazwisko wiek
puste puste puste aaa bbb ccc

0

Tak powinno się stać hehe. Ustaw z powrotem na false.

tak, wiec musisz po zwiazaniu danych z dgv ustawić dla każdej kolumny:

 
dataGridView1.Columns[0].DataPropertyName = //nazwa kolumny w tabeli
0

Wielkie dzieki dziala ok :) [green]

0

dodam jeszcze od siebie, że jeśli nie potrzebujemy tworzyć kolumny np. mamy ajkiś obiekt Osoba który posiada Imie, Nazwisko i Wiek to odpowiednie kolumny w dgv możemy w trakcie projektowania aplikacji stworzyć a zapełniać możemy w następujący sposób

foreach (osoba o in ListaOsob)
{
     dgv1.Rows.Add(o.Imie, o.Nazwisko, o.Wiek);
}

w ten sposób wszystkie pozycje z listy zostaną wpakowane do dgv

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