Odświeżanie dataGridView

0

Mam pytanie jak odświeżać zawartość dataGridView?

podpinam do grida jakąś listę

List<Obiekt> lista = new List<Obiekt>();
dataGridView.DataSource = lista;

i chciałbym po dodaniu kolejnego elementu do listy wstawić go również do grida. robię to obecnie w taki sposób:

dataGridView.DataSource = null;
dataGridView.DataSource = lista;

ale jest to raczej brzydki sposób rozwiązania

0

Mógłbyś napisać z jakiego IDE korzystasz i jaki typ aplikacji wybrałeś?
Visual Studio 2010 Ultimate nie zna parametru .DataSource dla kontrolki dataGrid w WPF.
Ja bym potraktował każdy element listy jako oddzielny obiekt i po kolei dodawał do grida pętlą foreach, a gdy użytkownik klika dodaj element to wykonywane jest np coś takiego:

zdażenie button on click:

TextBox dodaj = new TextBox();

//Tu parametry textboxu
// np. dodaj.Text = "costam";

dataGrid.Items.Add(dodaj);

(z llistBoxem działa)

0
Elejdor napisał(a)

Visual Studio 2010 Ultimate nie zna parametru .DataSource dla kontrolki dataGrid w WPF.

A skąd pomysł, że to WPF?

Ja jednak jestem zwolennikiem używania BindingSource gdzie się da:

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        BindingSource bsPijacy = new BindingSource();
        List<Pijak> pijacy = new List<Pijak>()
        {
            new Pijak() { Imię = "Antek", Promile = 2.5, },
            new Pijak() { Imię = "Franek", Promile = 1.2, },
        };

        public Form1()
        {
            InitializeComponent();

            this.bsPijacy.DataSource = this.pijacy;
            this.dataGridView1.DataSource = this.bsPijacy;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Pijak nowy = new Pijak() { Imię = "Jędrek", Promile = 3.7, };
            this.pijacy.Add(nowy);

            this.bsPijacy.ResetBindings(false);
        }
    }

    class Pijak
    {
        public string Imię { get; set; }
        public double Promile { get; set; }
    }
}
0

wlasnie chodzilo mi o cos takiego co podal somekind, jeszcze mam z tym taki maly problem. gdy do datasource podpinam ten binding to na gridzie mam o jeden pusty wiersz wiecej niz w przypadku podpiania listy. da sie cos z tym zrobic?

0

Ustaw BindingSource.AllowNew na false.

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